NGUI3.0最新版本

来源:互联网 发布:js 两个数组去重 编辑:程序博客网 时间:2024/05/02 20:40

最近在处理NGUI升级3.0的事宜,发现NGUI这次升级变化挺大的。

之前在NGUI2.X中很多处理事件的代码是这样的

01void Start ()
02{
03    TweenScale  tweenpos  = gameObject.AddComponent<TweenScale>();
04    tweenpos.onFinished =OnFinished;
05    tweenpos.from = transform.localScale;
06    tweenpos.to = new Vector3(1.2f,1.2f,1.2f);
07    tweenpos.duration = 0.2f;
08    tweenpos.Play(true);
09}
10void OnFinished (UITweener tween)
11{
12 
13}

 很抱歉,如果你升级到了NGUI3.0,那么你会收到一个错误。

Cannot convert method group `OnFinished’ to non-delegate type `System.Collections.Generic.List<EventDelegate>’. Consider using parentheses to invoke the method

于是去官网查了一下,发现NGUI对原有的事件进行了一次更新,需要写成这样。

01void Start ()
02{
03    TweenScale scale = GetComponent<TweenScale>();
04    EventDelegate.Add (scale.onFinished, OnFinished);
05}
06 
07void OnFinished ()
08{
09    Debug.Log(TweenScale.current.name);
10}

 值得注意的是,这次NGUI把所有的事件都做成了List<EventDelegate>中,如果我们需要监听事件那么需要调用EventDelegate.Add()方法,原先OnFinished可以把UITweener传入,那么现在需要使用TweenScale.current ,就是表示得到当前触发该控件的这个事件。Subscribe to built-in event delegates (like input change, tweens finishing, slider change, button click, etc)  这些都可以这样用。

UIButton可以用这种方式来做。

1UIButton button = gameObject.GetComponent<UIButton>();
2EventDelegate.Add(button.onClick, delegate()
3{
4    Debug.Log(UIButton.current.name);
5});

 但是UIImageButton还不行,所以咱是还是用老的方式来处理。

1UIImageButton imageButton = gameObject.GetComponent<UIImageButton>();
2UIEventListener.Get(imageButton.gameObject).onClick = delegate(GameObject go )
3{
4    Debug.Log(go.name);
5};

 

OK,目前这样工程就不报错了,继续come on!!