UIButton vs UIEventListener 事件处理
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事件
最新文章
- 全面解析ASP.NET MVC模块化架构方案
- nginx,apache,tomcat配置https的阿里提供的文档
- php+js实现分页
- Java 基础知识 练习
- Map/Reduce 工作机制分析 --- 错误处理机制
- 招聘一个靠谱的ios
- hdu 1202 The calculation of GPA
- linux下设置SSH无密码登陆
- double与int类型自动转换
- mac下git中文乱码
- java数据结构之hash表
- python 格式化日期
- VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]
- windows时间函数
- HDU 4869 Turn the pokers(推理)
- 移动端分享到微信和QQ
- 使用puppet
- [再寄小读者之数学篇](2014-06-23 积分不等式 [中国科学技术大学2013年高等数学B 考研试题])
- Spring再接触 Annotation part1
- 使用 $(function(){}) 时遇到的一个小bug及解决方法