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事件


本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/3890695.html,如需转载请自行联系原作者

相关文章
|
8月前
|
JavaScript 小程序
picker bindchange="bindPickerChange" 点击事件
picker bindchange="bindPickerChange" 点击事件
116 1
双击事件与单击事件的那些事
双击事件与单击事件的那些事
479 0
|
数据可视化
UGUI系列-Button绑定事件的多种实现
今天分享一下UGUI Button绑定事件的几种方法,以及优点和缺点 有哪些地方不懂的小伙伴也可以联系我的QQ,我的QQ就在博客链接中隐藏着,看能不能找到咯
Qt-事件处理-鼠标事件
Qt-事件处理-鼠标事件
125 0