UIButton vs UIEventListener 事件處理


NGUI的事件

在使用NGUI的事件處理時,發現UIButton和UIEventListener之間的共同點越來越多。

當然處理事件,也有一些其它的函數,比如:UIEventTrigger,ButtonMessage 等等,但我用的最多的就是UIButton和UIEventListener

我們知道,只要一個GameObject上添加了Collider(BoxCollider)並且它放在UICamera所渲染的Layer下,

image image

OnClick函數

那么當你在腳本中寫OnClick()函數時,當我們單擊這個Collider時,就會觸發這個OnClick()函數。

using UnityEngine;
using System.Collections;

public class ClickTest : MonoBehaviour
{
    void OnClick()
    {
        CBase.Log("click");
    }
}

事件調用堆棧

image

(圖) 調用堆棧

UIEventListener

因此,我們要使用UIEventListener 來響應UI事件,我們需要做兩件事

image

1)給UI控件添加BoxCollider,同時添加UIEventListener腳本

2) 調用委托的方法

 

UIEventlistener的函數

UIEventlistener的源文件放在Scripts/Internal/下,可知這個腳本的重要性。

打開這個腳本,可以看到里面寫了很多的委托。

image

image

UIEventListener用法一

UIEventListener.Get(gameObject).onClick += MyClickFunction;

其實就是在執行OnClick() 方法,而OnClick()是VoidDelegate(Gameobject go)

UIEventListener用法二

StartBtn.GetComponent<UIEventListener>().onClick = OnButtonClick;  void OnButtonClick(GameObject obj)

image

UIButton

基本上來說如果只是處理事件,可以用UIEventListener代替UIButton

UIButton的不同狀態圖片功能和以前2.X版本中的ImageButton功能非常相似

image 

文獻資料

另附這篇文章寫的很不錯:使用UIEventListener響應NGUI事件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM