我此时使用的NGUI版本是3.8.2
1、使用EventDelegate需要注意的一个地方
public TweenPosition m_tweenPosition = null;
EventDelegate.Add(m_tweenPosition.onFinished,OnTweenPositionFinished);
private void OnTweenPositionFinished()
{
EventDelegate.Remove(m_tweenPosition.onFinished, OnTweenPositionFinished);
Debug.Log("Test Finished." );
}
m_tweenPosition.PlayForward();
m_tweenPosition.PlayReverse();
经测试,发现当TweenPosition播放完移除回调后,再次执行播放TweenPosition还会执行OnTweenPositionFinished函数,根本就没移除掉。
上图为TweenPosition基类Update函数中执行onFinished,触发播放完成的地方。
由此图就可以知道,当使EventDelegate添加和移除事件或委托的时候注意一下。
可以使用此函来代替
EventDelegate Add (List<EventDelegate> list, Callback callback, bool oneShot)
这个函数的第三个参数就是只执行一次,当执行完成后会自动移除事件委托。