2016-08-23 20 views
1

初心者はこちらです。ですから、私はgameManagerスクリプトからいくつかのテキスト要素をフェードイン/フェードアウトさせたいと思っています。私はUnity - テキストUIのアルファ色をスクリプトから変更しますか?

public float fadeTime = 0.1f; 
public Text example; 


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

を試みたが、それはエラー

+0

どのようなエラーが表示されますか? –

+0

'UnityEngine.UIを使用してください。 ' –

+0

' 'Graphic.color'の戻り値が変数ではないため変更できません " – Sciencephile

答えて

2

がLerpを使用してみてください、私を与えます。 'newColor'の 'alpha'を0に設定する限り、テキストはフェードアウトします。

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:使用コルーチン

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

GetInput()メソッドに統合する必要があるため、Update()に挿入できません。私はfor文でそれを変更しようとしましたが、それは動作しません。 for(fadeTime = 1; fadeTime = 0; fadeTime = fadeTime - 0.1f){example.color = Color.Lerp(example.color、newColor、fadeTime * Time.deltaTime); } – Sciencephile

+0

更新が使用できない時間を制御するもう1つの方法はCoroutinesです。私の編集を参照してください。 – AlexTudo

+0

私は混乱していますが、fadeTimeが一定のままであっても不透明度が変わるのは混乱していますが、ladeがfadeTimeが示すものに変換するはずがないので、fadeTimeを増やす必要がありました。 – Sciencephile

0

あなたが直接色の値を変更することはできません。その代わりに、別個の色変数を作成し、好きなように変更してみてください。あなたがスムーズにオブジェクトをフェードアウトしたい場合は

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

Coroutinesを使用することを検討してください。

関連する問題