这次我们要实现一个游戏UI开发中很常见的功能:淡入淡出提示框。功能很简单,接下来我就用以下两种方式来处理。
- NGUI的TweenAlpha方式
首先挂载一个TweenAlpha组件,设置如下:
具体代码如下:
using UnityEngine;
using System.Collections;
public class MyAlphaTweener : MonoBehaviour
{
void Start()
{
OnFadeIn();
}
void OnFadeIn()
{
gameObject.SetActive(true);
TweenAlpha ta = GetComponent<TweenAlpha>();
ta.ResetToBeginning();
ta.enabled = true;
ta.PlayForward();
EventDelegate.Set(ta.onFinished, OnFadeOut);
}
void OnFadeOut()
{
gameObject.SetActive(false);
}
}
- 自定义方式
我们可以通过在Update()方法中每帧处理UIWidget组件的alpha值即可达到想要的效果。
具体代码如下:
using UnityEngine;
using System.Collections;
public class Tweener : MonoBehaviour
{
public float tweenDelay; //延迟时间
public float tweenFrom; //开始alpha
public float tweenTo; //结束alpha
public float tweenDuration; //持续时间
private bool beginTween; //是否开始Tween
private float alphaAdd; //alpha差值
UIWidget widget;
void Start()
{
widget = GetComponent<UIWidget>();
BeginTween();
}
void BeginTween()
{
widget.alpha = tweenFrom;
alphaAdd = tweenTo - tweenFrom;
StartCoroutine(DelayTweener());
}
IEnumerator DelayTweener()
{
yield return new WaitForSeconds(tweenDelay);
beginTween = true;
}
void Update()
{
if (beginTween)
{
widget.alpha += (alphaAdd / tweenDuration) * Time.deltaTime;
if ((alphaAdd > 0.0f && widget.alpha >= tweenTo) || (alphaAdd < 0.0f && widget.alpha <= tweenTo))
{
beginTween = false;
}
}
}
}
Ricky Yang个人原创,版权所有,转载注明,谢谢。http://blog.csdn.net/yangyy753