UIButton vs UIEventListener 事件处理

本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/3890695.html



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

作者:赵青青   一名在【网易游戏】做游戏开发的程序员,擅长Unity3D,游戏开发,.NET等领域。
本文版权归作者和博客园共有,欢迎转载,转载之后请务必在文章明显位置标出原文链接和作者,谢谢。
如果本文对您有帮助,请点击【推荐】您的赞赏将鼓励我继续创作!想跟我一起进步么?那就【关注】我吧。
posted @   赵青青  阅读(4799)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示
CONTENTS