2017-06-06 28 views
0

我正在從Unity的用戶界面轉移到NGUI。以統一方式處理ngui的按鈕事件

以前,我可以添加監聽器按鈕,以下腳本:

button.GetComponentInChildren<Button>().onClick.AddListener(() => 
{ 
    //codes that could be triggered by click the button. 
}); 

但改爲NGUI的時候,我不能讓它的工作:

EventDelegate.Set(go.GetComponent<UIButton>().onClick, OnButtonClickActive); 

private void OnButtonClickActive() 
{ 
    Debug.Log("active button clicked"); 
} 
+0

什麼是編譯時錯誤? – kennyzx

+0

@kennyzx沒有錯誤顯示。只是不工作。 – armnotstrong

回答

1

最後,我做了這個使用以下腳本(使用UIEventListener)向OnClick添加自定義事件:

UIEventListener.Get(go).onClick += OnButtonClickActive; 

且事件處理程序的定義如下:

private void OnButtonClickActive(GameObject go) 
    { 
     int level; 
     int.TryParse(go.GetComponentInChildren<UILabel>().text, out level); 
     Debug.Log(level + "active button clicked"); 
     ApplicationModel.CurrentLevel = ApplicationModel.Levels[level - 1]; 
     SceneManager.LoadScene("PlayScene"); 
    } 

需要注意的是,它可能是一個有點傻,在遊戲對象的UILable組件傳遞參數(水平信息)。如果還有其他更優雅的方式,請讓我知道。