NGUI的事件
在使用NGUI的事件處理時,發現UIButton和UIEventListener之間的共同點越來越多。
當然處理事件,也有一些其它的函數,比如:UIEventTrigger,ButtonMessage 等等,但我用的最多的就是UIButton和UIEventListener
我們知道,只要一個GameObject上添加了Collider(BoxCollider)並且它放在UICamera所渲染的Layer下,
OnClick函數
那么當你在腳本中寫OnClick()函數時,當我們單擊這個Collider時,就會觸發這個OnClick()函數。
using UnityEngine; using System.Collections; public class ClickTest : MonoBehaviour { void OnClick() { CBase.Log("click"); } }
事件調用堆棧
(圖) 調用堆棧
UIEventListener
因此,我們要使用UIEventListener 來響應UI事件,我們需要做兩件事
1)給UI控件添加BoxCollider,同時添加UIEventListener腳本
2) 調用委托的方法
UIEventlistener的函數
UIEventlistener的源文件放在Scripts/Internal/下,可知這個腳本的重要性。
打開這個腳本,可以看到里面寫了很多的委托。
UIEventListener用法一
UIEventListener.Get(gameObject).onClick += MyClickFunction;
其實就是在執行OnClick() 方法,而OnClick()是VoidDelegate(Gameobject go)
UIEventListener用法二
StartBtn.GetComponent<UIEventListener>().onClick = OnButtonClick; void OnButtonClick(GameObject obj)
UIButton
基本上來說如果只是處理事件,可以用UIEventListener代替UIButton
UIButton的不同狀態圖片功能和以前2.X版本中的ImageButton功能非常相似
文獻資料
另附這篇文章寫的很不錯:使用UIEventListener響應NGUI事件