UGUI(四)事件系统的封装
来源:互联网 发布:免费刷视频会员软件 编辑:程序博客网 时间:2024/05/01 18:54
UGUI的事件系统默认使用时,是需要当前的类继承事件接口,就可以在该类中加入它的事件方法,但是在多人开发时这种方式没什么好处。
用过NGUI的或许都知道UIEventListener这个类,因为使用超级方便,直接加入UI对象进行事件注册即可。其实UGUI也可以模仿这种方式进行封装。
代码如下:
- using
UnityEngine; - using
System.Collections; - using
UnityEngine.EventSystems; - public
class UUIEventListener : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerEnterHandler, IPointerExitHandler, IPointerUpHandler, ISelectHandler, IUpdateSelectedHandler, IDeselectHandler, IDragHandler, IEndDragHandler, IDropHandler, IScrollHandler, IMoveHandler - {
public delegate voidVoidDelegate(GameObject go); public VoidDelegate onClick; public VoidDelegate onDown; public VoidDelegate onEnter; public VoidDelegate onExit; public VoidDelegate onUp; public VoidDelegate onSelect; public VoidDelegate onUpdateSelect; public VoidDelegate onDeSelect; public VoidDelegate onDrag; public VoidDelegate onDragEnd; public VoidDelegate onDrop; public VoidDelegate onScroll; public VoidDelegate onMove; public object parameter; public void OnPointerClick(PointerEventData ifeventData) { (onClick null)!= onClick(gameObject); } public void OnPointerDown(PointerEventData ifeventData) { (onDown null)!= onDown(gameObject); } public void OnPointerEnter(PointerEventData ifeventData) { (onEnter null)!= onEnter(gameObject); } public void OnPointerExit(PointerEventData ifeventData) { (onExit null)!= onExit(gameObject); } public void OnPointerUp(PointerEventData ifeventData) { (onUp null)!= onUp(gameObject); } public void OnSelect(BaseEventData ifeventData) { (onSelect null)!= onSelect(gameObject); } public void OnUpdateSelected(BaseEventData ifeventData) { (onUpdateSelect null)!= onUpdateSelect(gameObject); } public void OnDeselect(BaseEventData ifeventData) { (onDeSelect null)!= onDeSelect(gameObject); } public void OnDrag(PointerEventData ifeventData) { (onDrag null)!= onDrag(gameObject); } public void OnEndDrag(PointerEventData ifeventData) { (onDragEnd null)!= onDragEnd(gameObject); } public void OnDrop(PointerEventData ifeventData) { (onDrop null)!= onDrop(gameObject); } public void OnScroll(PointerEventData ifeventData) { (onScroll null)!= onScroll(gameObject); } public void OnMove(AxisEventData ifeventData) { (onMove null)!= onMove(gameObject); } static public UUIEventListener Get(GameObject go) { UUIEventListener listener = go.GetComponent(); if (listener null)== listener = go.AddComponent(); return listener; } - }
使用方式:
- UUIEventListener.Get(btn.gameObject).onClick
= OnClickBtn; - UUIEventListener.Get(btn.gameObject).parameter
= index; - private
void OnClickBtn(GameObject go) - {
int index int)UUIEventListener.Get(go).parameter;= ( Debug.Log("您单击的索引为:" + index); - }
0 0
- UGUI(四)事件系统的封装
- UGUI(四)事件系统的封装
- 封装UGUI的点击事件
- UGUI事件的系统
- UGUI学习笔记(四)UGUI事件系统简述及使用方法总结
- [UnityUI]UGUI的事件系统
- UGUI点击事件的简单封装
- 基于Unity3D(UGUI)的背包系统<四>完结篇
- UGUI 按钮的监听事件系统
- UGUI的按钮监听事件系统
- Unity UGUI事件系统
- UGUI中的事件系统
- 将UGUI的事件封装成NGUI模式
- 【UGUI】UGUI的事件监听
- UGUI(一)List列表的封装
- UGUI(1)List列表的封装
- UGUI(十五)下拉列表的封装
- unity UGUI按钮绑定事件的四种方法
- 【python学习笔记二】基本数据类型
- malloc 从哪里得到的内存空间
- [Servlet]Servlet的工作流程及注意事项
- 线程知识回顾
- 携程事件简单故障分析
- UGUI(四)事件系统的封装
- Github 上Top1的Android 异步网络请求框架
- C++能否成为你新的脚本语言?
- springMVC Required MultipartFile parameter 'file' is not present error
- JVM工作原理介绍
- How to Write a Spelling Corrector代码注释
- LeetCode【6】. ZigZag Conversion --思路图解与java实现
- listview中edittext复用导致下面的自动填写
- web 项目ant打包完整案例