在游戲開發中,經常會因為直接將GameObject,setActive的方式打開關閉,這種方式效果太過生硬而給它加上一個Tween
可能是AlphaTween或者ScaleTween。
再加上一個PlayTween來做控制。
這樣子需要在每個GameObject上加上這幾個Component不說,還很不好用
所以結合之前用的一個拓展函數的方法,想到一個非常非常方便的方法
(之前的拓展函數文章:http://blog.csdn.net/chrisfxs/article/details/51221892)
using UnityEngine;
using System.Collections; namespace ExtensionMethods
{ public static class MyExtensions { public static void SetActiveWithAlphaTween(this GameObject gameObject,bool active){UITweenControl<TweenAlpha> tween = new UITweenControl<TweenAlpha>();UIWidget widget = gameObject.GetCompoent<UIWidget>();if(widget == null)widget = gameObject.AddCompoent<UIWidget>();if(active){gameObject.SetActive(true);widget.alpha =0;tween.Begin(gameObject,widget.alpha,1,0.3f,0);}else{widget.alpha =1;tween.Begin(gameObject,widget.alpha,0,0.3f,0);tween.SetFinishCallBack(delegate(){tween.RemoveEventDelegate();gameObjec.SetActive(false);},true);}}}
}
其中上面UITweenControl是自己封裝的控制UITween的類,這個你們也可以自己封裝一個,也可以就用NGUI自帶的,具體需要自己去修改,不過思路就是上面那樣了,不會有什么太難的地方。
就是在打開或關閉GameObject的時候判斷是否有Tween和Widget,沒有就加上,并使用Tween控制器來控制漸變開關
這樣子只用在類前面加上命名空間
using ExtensionMethods;
然后你的GameObject就可以直接使用了!
GameObject go;
go.SetActiveWithAlphaTween(true);
機智如我
轉載于:https://blog.51cto.com/13638120/2084963