2016-09-05 1 views
0

Я хочу добавить эффекты Fade In и Fade Out к своим кнопкам пользовательского интерфейса в Unity5, но CrossFadeAlpha и CrossFadeColor не работают с кнопками. Есть ли альтернатива достижению fadein и fadeout эффекта кнопки пользовательского интерфейса в единстве.FadeIn fadeOut Кнопка UI в единстве 5

+0

Off верхней части моей головы, я бы сказал, что вы можете либо создать анимация, которая угасает кнопку (используя альфа-значение) или записывает сопрограмму, которая это делает. – UnholySheep

+0

Вы попробовали ответ, который я оставил? – Programmer

+0

Я использовал изображение с указателем обработчика событий вниз и добавил cross fade alpha. Это сделал то, что я хотел. –

ответ

0

Надеюсь, этот пример поможет вам, нажмите кнопку, когда экран будет затемнен медленно медленно. Если вы хотите сделать FadeIn установить canvas.alpha значения сначала 0 и увеличить значение

Select Canvas Иерархия панель и добавление класса выцветанию затем кнопка 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

Там будет не построена в пути сделайте это, но вы можете реализовать свой собственный метод выполнения этого. Получите компоненты и Text с вашего Button, затем воспользуйтесь сопрограммой для изменения альфы их цветов с течением времени.

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; 

выцветанию вButton в 3 секунд

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

исчезать изButton в 3 секунд

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

Использование LeanTween которым является эффективным Tweening двигателя для Unity3d, загрузите пакет из магазина активов и импорт LeanTween.cs вашей proyect.

Кнопка должна быть холст группы дополнение добавить Проявление или с помощью этого сценария:

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

source