2016-07-28 46 views
1

Ich möchte in der Lage sein, einen Farbverlauf bar mit C# Skript wie folgt aussehen zu erstellen: enter image description hereeinen Gradienten und Farben ändern zu machen auf der Grundlage dieses Gradienten in Unity3D - C# Script

Dann würde ich gerne zu sagen Sie, wenn meine Zahl im Bereich (0.8 - 1.0) ist, machen Sie mein Objekt so rot, dass es in der Steigung angezeigt wird.

Ich bin mir nicht sicher, wie ich das angehen soll. Für jetzt habe ich nur 2 feste Farben. Ich habe:

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

für positive Werte und blau für negative Werte.

Jede Hilfe wäre willkommen.

Antwort

2

Siehe Unity's Gradient class. Sie können eine Liste von GradientColorKey[] und GradientAlphaKey erstellen und jeden Farb-/Zeitwert einstellen. Für Ihren Zweck würde ich verwenden:

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); 

Dies wird Ihnen die Color erhalten, die in g.Evaluate() der Anzahl entspricht, so sollten Sie die Zeitparameter in g.Evaluate(1) einer Variablen ändern oder was auch immer Sie wollen. Wenn Sie transparente oder schwarze Texturen erhalten, ändern Sie die alpha Werte in gak. Hoffe, das war hilfreich :)

+0

was ist alpha? und kann meine Zeit eine beliebige Nummer sein? (zwischen -6000 bis 6000 zum Beispiel?) – 2222

+0

Auch es scheint nicht wie es durch den Gradienten geht. scheint nur so zwischen Farben flackern. es sei denn, meine Änderungen sind nicht signifikant genug, um – 2222

+0

@ 2222 zu sehen. Alpha ist die "Transparenz" der Textur. Leider bin ich mir nicht sicher, was genau das relative Alpha sein soll. Versuchen Sie vielleicht, 'gck [1] .time' auf 0 anstatt auf negative 1 zu setzen und setzen Sie auch' gak [0] 'auf 1.0F? Der 'Gradient' wird gemacht, um Farben zu durchlaufen, also sollte er in der Lage sein, zu tun, was Sie wollen, obwohl ich selber nicht viel Erfahrung damit habe. –