2016-09-05 1 views
0

Unity5のUIボタンにフェードインやフェードアウトエフェクトを追加したいのですが、CrossFadeAlphaとCrossFadeColorはボタンでは機能しません。 UIボタンのフェードインとフェードアウトの効果を1つにまとめる方法がありますか?FadeIn fadeOut UIボタンが1になっています5

+0

私の頭の上オフ(アルファ値を使用して)ボタンをフェードアウトしたり、それを行うコルーチンを作成したりするアニメーションです。 – UnholySheep

+0

私は残した答えを試しましたか? – Programmer

+0

イベントハンドラのポインタを下にして画像を使用し、クロスフェードアルファを追加しました。 –

答えて

0

私はこの例があなたを助けてくれることを願っています。スクリーンがゆっくりと暗くなるときにボタンを押してください。fadeOut。あなたがdragAndDropボタンのonClickと設定機能FadeIt

public class Fade : MonoBehaviour 
    { 

     public void FadeIt() 
     { 
      StartCoroutine(DoFade()); 
     } 

    IEnumerator DoFade() 
    { 
    CanvasGroup canvasG = GetComponent<CanvasGroup>(); 
    While (canvasG.alpha > 0) 
    { 
     canvasG.alpha -= Time.deltaTime/2 ; // optinal parameters 2 ,3 ,5 
     yield return null; 
    } 
    } 
} 
0

をフェードインが最初に0でcanvas.alpha値を設定するために、その値

選択キャンバス階層パネルを増やしたいとフェードクラスを追加する場合に方法で構築何もありませんこれを行うが、これを行う独自の方法を実装することができます。 ButtonからImageTextのコンポーネントを取得してから、時間の経過とともにコルーチンを使用して色のアルファを変更します。

IEnumerator fadeButton(Button button, bool fadeIn, float duration) 
    { 

     float counter = 0f; 

     //Set Values depending on if fadeIn or fadeOut 
     float a, b; 
     if (fadeIn) 
     { 
      a = 0; 
      b = 1; 
     } 
     else 
     { 
      a = 1; 
      b = 0; 
     } 

     Image buttonImage = button.GetComponent<Image>(); 
     Text buttonText = button.GetComponentInChildren<Text>(); 

     //Enable both Button, Image and Text components 
     if (!button.enabled) 
      button.enabled = true; 

     if (!buttonImage.enabled) 
      buttonImage.enabled = true; 

     if (!buttonText.enabled) 
      buttonText.enabled = true; 

     //For Button None or ColorTint mode 
     Color buttonColor = buttonImage.color; 
     Color textColor = buttonText.color; 

     //For Button SpriteSwap mode 
     ColorBlock colorBlock = button.colors; 


     //Do the actual fading 
     while (counter < duration) 
     { 
      counter += Time.deltaTime; 
      float alpha = Mathf.Lerp(a, b, counter/duration); 
      //Debug.Log(alpha); 

      if (button.transition == Selectable.Transition.None || button.transition == Selectable.Transition.ColorTint) 
      { 
       buttonImage.color = new Color(buttonColor.r, buttonColor.g, buttonColor.b, alpha);//Fade Traget Image 
       buttonText.color = new Color(textColor.r, textColor.g, textColor.b, alpha);//Fade Text 
      } 
      else if (button.transition == Selectable.Transition.SpriteSwap) 
      { 
       ////Fade All Transition Images 
       colorBlock.normalColor = new Color(colorBlock.normalColor.r, colorBlock.normalColor.g, colorBlock.normalColor.b, alpha); 
       colorBlock.pressedColor = new Color(colorBlock.pressedColor.r, colorBlock.pressedColor.g, colorBlock.pressedColor.b, alpha); 
       colorBlock.highlightedColor = new Color(colorBlock.highlightedColor.r, colorBlock.highlightedColor.g, colorBlock.highlightedColor.b, alpha); 
       colorBlock.disabledColor = new Color(colorBlock.disabledColor.r, colorBlock.disabledColor.g, colorBlock.disabledColor.b, alpha); 

       button.colors = colorBlock; //Assign the colors back to the Button 
       buttonImage.color = new Color(buttonColor.r, buttonColor.g, buttonColor.b, alpha);//Fade Traget Image 
       buttonText.color = new Color(textColor.r, textColor.g, textColor.b, alpha);//Fade Text 
      } 
      else 
      { 
       Debug.LogError("Button Transition Type not Supported"); 
      } 

      yield return null; 
     } 

     if (!fadeIn) 
     { 
      //Disable both Button, Image and Text components 
      buttonImage.enabled = false; 
      buttonText.enabled = false; 
      button.enabled = false; 
     } 
    } 

使用

public Button button; 

フェードインButton3

StartCoroutine(fadeButton(button, true, 3)); 

フェードアウト3秒でButton

StartCoroutine(fadeButton(button, false, 3)); 
0

使用LeanTweenウィッヒは、あなたのproyectに資産ストアおよびインポートLeanTween.csからパッケージをダウンロードし、Unity3dのための効率的なトゥイーンエンジンです。

このスクリプトでフェードインまたはフェードアウトを追加するには、キャンバスグループの補数を持っている必要がありますボタン:私はあなたが作成することができますどちらかと言うと思います

myButton.onClick.AddListener(()=>{ 
LeanTween.alphaCanvas (myButton.GetComponent<CanvasGroup>(), 0f, 0.1f); 
}); 

source

関連する問題