2016-10-04 5 views
1

私は、瞬時にではなく徐々にUI画像のアルファを変更したいと思っています。これまでのところ、上記のコードは正常に動作します時間の経過とともにユニティフェード画像アルファ

public void Highlight() 
{ 
    foreach (Image image in imagesToHighlight) 
    { 
     Color c = image.color; 
     if(c.a < maxColor) 
     { 
      c.a = maxColor; 
     } 

     image.color = c; 
    } 

    foreach (Image image in imagesToFade) 
    { 
     Color c = image.color; 
     if(c.a > halfColor) 
     { 
      c.a = halfColor; 
     } 
     image.color = c; 

    } 

} 

次のように私のイメージのアルファをフェージングのための私のコードはすぐですが、私は自分のコードを修正するために苦労していますので、代わりに即座にそれをやって、それはかけてゆっくりそれをしないこと2番目または2番目。私は、画像がゆっくりと徐々にフェードアウトするかどうかを確認するために、c.a--にラインc.a = maxColor;を変更しようとしましたが、アルファはただちにドロップします。

私は間違っていますか?

答えて

3

Coroutineを使用してこれを実装します。このような何か:

フェードアウト:

private YieldInstruction fadeInstruction = new YieldInstruction(); 
IEnumerator FadeOut(Image image) 
{ 
    float elapsedTime = 0.0f; 
    Color c = image.color; 
    while (elapsedTime < fadeTime) 
    { 
     yield return fadeInstruction; 
     elapsedTime += Time.deltaTime ; 
     c.a = 1.0f - Mathf.Clamp01(elapsedTime/fadeTime); 
     image.color = c; 
    } 
} 

あなたはこのようにそれを使用することがあります。

foreach (Image image in imagesToFade) 
    StartCoroutine(FadeOut(image)); 

フェードイン:

IEnumerator FadeIn(Image image) 
{ 
    float elapsedTime = 0.0f; 
    Color c = image.color; 
    while (elapsedTime < fadeTime) 
    { 
     yield return fadeInstruction; 
     elapsedTime += Time.deltaTime ; 
     c.a = Mathf.Clamp01(elapsedTime/fadeTime); 
     image.color = c; 
    } 
} 

が、これは

を役に立てば幸い

image.DOFade(1, 0.5f)

Dotweenは、ドキュメントを参照してください、あなたを助けるためにexptention方法をたくさん持っている:あなたは、単にこのようにそれを使用し、その後Dotweenなどのトゥイーンエンジンを使用することができ

+0

おかげで、私はそれを修正しようとしていませんよ。どうすればいい? – N0xus

+0

答えを更新しました –

関連する問題