2016-07-28 8 views
1

私はC#のスクリプトを使用して色のグラデーションバーを作成できるようにしたいのですが、あまりにも次のようになります。enter image description hereは、グラデーションを作るとUnity3Dでその勾配に基づいて色を変更する - C#スクリプト

その後、私はしたいのですが私の数値が範囲(0.8 - 1.0)にある場合、私のオブジェクトをグラデーションに表示される赤の色合いにします。

私はこれにアプローチする方法がわかりません。今のところ私は単色が2色しかありません。私は持っています:

myGameObject.GameComponent<Renderer>().material.color = Color.red; 

正の値は青、負の値は青です。

ご協力いただければ幸いです。

答えて

2

Unity's Gradient classを参照してください。 GradientColorKey[]GradientAlphaKeyのリストを作成し、各色/時間の値を設定することができます。あなたの目的のために、私が使用します。これは非常にあなたが欲しい変数または任意にg.Evaluate(1)に時間パラメータを変更する必要があり、あなたにg.Evaluate()で番号に対応するColorを取得します

Gradient g = new Gradient(); 
    GradientColorKey[] gck = new GradientColorKey[2]; 
    GradientAlphaKey[] gak = new GradientAlphaKey[2]; 
    gck[0].color = Color.red; 
    gck[0].time = 1.0F; 
    gck[1].color = Color.blue; 
    gck[1].time = -1.0F; 
    gak[0].alpha = 0.0F; 
    gak[0].time = 1.0F; 
    gak[1].alpha = 0.0F; 
    gak[1].time = -1.0F; 
    g.SetKeys(gck, gak); 
    myGameObject.GameComponent<Renderer>().material.color = g.Evaluate(1); 

。透明または黒のテクスチャを取得する場合は、alphaの値をgakに変更してみてください。これが役に立ったと思います:)

+0

アルファは何ですか?私の時間は何でもかまいませんか? (例えば、-6000から6000の間?) – 2222

+0

また、グラデーションを通過しているようには見えません。ちょうど色の間でそんなにちらちら見える。私の変更が表示されていない限り、 – 2222

+0

@ 2222アルファはテクスチャの「透明性」です。残念ながら、私は相対的なアルファが何であるべきか正確にはわかりません。おそらく 'gck [1] .time'を負の1の代わりに0に設定し、' gak [0] 'を1.0Fに設定しようとしますか? 「グラデーション」は色を繰り返し処理するために作られているので、私は自分でそれほど経験がありませんが、あなたがしたいことをすることができるはずです。とにかくありがとう。 –

関連する問題