【小松教你手遊開發】【unity實用技能】給每個GameObject的打開關閉加上一個漸變
阿新 • • 發佈:2018-03-11
無 手遊開發 在遊戲開發中,經常會因為直接將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);
機智如我
【小松教你手遊開發】【unity實用技能】給每個GameObject的打開關閉加上一個漸變