zoukankan      html  css  js  c++  java
  • 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事件

  • 相关阅读:
    类的初始化器(调用其父类构造函数、调用自己其他构造函数)
    从C# 2.0新特性到C# 3.5新特性
    用javascript请求动态页url返回更新
    ASP.NET绑定学习
    asp.net使用include包含文件
    ASP.NET Hashtable输出JSON格式数据
    FIS前端集成解决方案
    FIS.js前端开发的使用说明文档
    自定义控件之万能Repeater源码
    ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/3890695.html
Copyright © 2011-2022 走看看