UGUI-仿照NGUI的事件监听机制
来源:互联网 发布:首都医科大学知乎 编辑:程序博客网 时间:2024/05/21 19:25
UGUI-仿照NGUI的事件监听机制
使用unity已经有很长一段时间了,一直在使用NGUI来做UI开发,NGUI的UIEventListener使用上感觉非常方便,这段时间项目综合考虑了NGUI和UGUI后决定使用UGUI来做项目的开发,刚接触UGUI的事件太难用了,看了MOMO的博客很受启发,也学着仿着NGUI的写了一个事件的封装类。分享出来供大家交流学习,有什么不足的地方,希望积极指正。
UGUI的EventSystems命名空间下有一个EventTrigger类,这个类继承了MonoBehiver类并且实现了UGUI事件的接口,来看一下EventTrigger类
EventTrigger类实现了EventSystem的事件接口,这样的话,我们只需要写一个类让他继承至EventTrigger类,然后重写EventTrigger实现的方法,就可以监听各种事件了,比如重写OnPointerEnter方法,然后广播出去。
public class UGUIEventListener : EventTrigger{ public delegate void MyDelegate(GameObject go); public event MyDelegate Click; public event MyDelegate RightClick; public event MyDelegate DoubleClick; public event MyDelegate BeginDrag; public event MyDelegate Drag; public event MyDelegate EndDrag; public event MyDelegate PointerEnter; public event MyDelegate PointerExit; public event MyDelegate PointerDown; public event MyDelegate PointerUp; public override void OnPointerClick(PointerEventData eventData) { //双击必定会执行一次单击 if (eventData.button == PointerEventData.InputButton.Left && eventData.clickCount == 2) { if (DoubleClick != null) { DoubleClick(gameObject); } } else if (eventData.button == PointerEventData.InputButton.Left && eventData.clickCount ==1) { if (Click!=null) { Click(gameObject); } } else if (eventData.button == PointerEventData.InputButton.Right && eventData.clickCount == 1) { if (RightClick!=null) { RightClick(gameObject); } } }}
在最后要为游戏物体动态添加这个脚本
public static UGUIEventListener Get(GameObject go) { UGUIEventListener listener = go.GetComponent<UGUIEventListener>(); if (listener==null) { listener = go.AddComponent<UGUIEventListener>(); } return listener; }
这样就完成了,使用方式跟NGUI是使用没什么区别,使用方式如下(将test脚本挂到UI物体上,就可以监听鼠标的各种事件了)
using UnityEngine;public class test : MonoBehaviour{ void Awake() { UGUIEventListener.Get(gameObject).Click += OnLeftClick; } private void OnLeftClick(GameObject go) { Debug.Log("左键单击"); }}
最后实现的效果如下,也可以通过修改UGUIEventListener的逻辑来使事件更符合实际开发的需求。
作者使用的Unity版本是:2017.1.0f3
文章的完整代码我已经共享到百度云了:
链接:http://pan.baidu.com/s/1qXW3HA8 密码:mp1c
阅读全文
0 0
- UGUI-仿照NGUI的事件监听机制
- UGUI的事件监听机制
- 【UGUI】UGUI的事件监听
- 【Unity3D ugui】事件监听机制
- 关于UGUI和NGUI监听的研究
- UGUI的事件机制
- UGUI的按钮监听事件
- NGUI 事件监听的原理
- UGUI的点击事件机制
- 【Unity3D ugui】简单控件的事件监听
- UGUI 按钮的监听事件系统
- UGUI Toggle的监听事件绑定
- UGUI的按钮监听事件系统
- uGUI事件监听
- UGUI 按钮监听事件
- UGUI事件监听总结
- NGUI 触发事件的监听方法
- NGUI三种方式监听NGUI的事件方法
- Spring-data-jpa 集成Hibernate时延迟加载问题
- SQL中的聚合函数使用总结
- python邮件发送给多人时,只有第一个人能收到的问题
- jsonp协议原理深度解析
- Letter c语言-Combinations of a Phone Number
- UGUI-仿照NGUI的事件监听机制
- 使用线性分类模型从事良/恶性肿瘤预测任务
- 剑指Offer--8.跳台阶
- Eclipse配置tomcat
- ModelAndVIew——视图渲染器
- Qt Quick属性特性
- 前端开发工具、库和资源
- eclipse maven 项目 maven build 无反应
- 边权更新 查询路径长度和最大边权 【树链剖分 模板】