2016-08-23 2 views
1

Neuling hier. Also möchte ich in der Lage sein, einige Textelemente aus einem GameManager-Skript ein- und auszublenden. Ich habe versucht,Unity - Change Text UI Alpha-Farbe aus dem Skript?

public float fadeTime = 0.1f; 
public Text example; 


void FadeOut() 
{ 
    example.color.a -= fadeTime; 
} 

Aber es gibt mir Fehler

+0

Welche Fehler bekommen Sie? –

+0

Denken Sie daran, 'using UnityEngine.UI zu verwenden; ' –

+0

"Kann den Rückgabewert von' Graphic.color 'nicht ändern, da es keine Variable ist" – Sciencephile

Antwort

2

Versuchen Lerp verwenden. Solange Sie das 'alpha' von 'newColor' auf 0 setzen, wird der Text ausgeblendet.

public Text example; 
public Color newColor; 
public float fadeTime = 0.1f; //maybe rename this to fadeSpeed 

//this should be called somewhere in Update 
void FadeOut() 
{ 
    example.color = Color.Lerp(example.color, newColor, fadeTime * Time.deltaTime); 
} 

EDIT: Mit Koroutinen

void CallingMethod() 
{ 
    StartCoroutine(FadeOut()); 
} 

//note the change from 'void' to 'IEnumerator' 
IEnumerator FadeOut() 
{ 
    //ugly while, Update would be ideal 
    while (example.color.a > 0) 
    { 
     example.color = Color.Lerp(example.color, newColor, fadeTime * Time.deltaTime); 
     yield return null; 
    } 
    //code after fading is finished 
} 
+0

Ich kann es nicht in Update() einfügen, da es in eine GetInput() -Methode integriert werden muss. Ich habe versucht, es mit einer for-Anweisung zu ändern, aber es funktioniert nicht. für (fadeTime = 1; fadeTime <= 0; fadeTime = fadeTime - 0.1f) {Beispiel.Farbe = Farbe.Lerp (Beispiel.Farbe, neuFarb, fadeTime * Zeit.deltaTime); } – Sciencephile

+0

Die andere Möglichkeit, Zeit zu steuern, wenn Update nicht verwendet werden kann, sind Coroutines. Siehe meine Bearbeitung. – AlexTudo

+0

Danke Mann, es funktioniert, obwohl ich bin verwirrt, warum die Deckkraft ändert, auch wenn die FadeTime konstant bleibt, ist nicht LERP soll es umwandeln, was FadeTime zeigt, und so mussten wir fadeTime inkrementieren? – Sciencephile

0

Sie können nicht direkt Farbwerte ändern. Versuchen Sie stattdessen, eine separate Farbvariable zu erstellen und diese nach Belieben zu ändern.

Color color = example.color; 
color.a -= fadeTime; 
example.color = color.a; 

Wenn Sie ein Objekt glatt verblassen wollen, betrachten Coroutines verwenden.