[英]handle ngui's button event programmatically in unity
我正在从Unity的UI转移到NGUI。
以前,我可以使用以下脚本将侦听器添加到button:
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");
}
最后,通过使用以下脚本(使用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
组件一起传递可能有点愚蠢。 如果还有其他更优雅的方法,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.