Unity游戏UI框架(八):监听事件系统
2017-06-19 22:26
746 查看
在这里会用到UIEventListener处理事件,
Unity官方文档:http://docs.unity3d.com/460/Documentation/Manual/SupportedEvents.html
UIEventListener API简介,详细的了解官方文档
指针进入
public void OnPointerEnter(PointerEventData eventData);
指针退出
public void OnPointerExit(PointerEventData eventData);
指针按下
public void OnPointerDown(PointerEventData eventData);
指针释放(可能按下时的指针位置跟释放时的指针位置不同,这里指的是按下时指针指着的物体)
public void OnPointerUp(PointerEventData eventData);
在同一物体上按下并释放
public void OnPointerClick(PointerEventData eventData);
拖拽时的初始化,跟IPointerDownHandler差不多,在按下时调用
public void OnInitializePotentialDrag(PointerEventData eventData);
开始拖拽
public void OnBeginDrag(PointerEventData eventData);
拖拽中
public void OnDrag(PointerEventData eventData);
拖拽结束(被拖拽的物体调用)
public void OnEndDrag(PointerEventData eventData);
拖拽结束(拖拽结束后的位置(即鼠标位置)如果有物体,则那个物体调用)
public void OnDrop(PointerEventData eventData);
滚轮滚动
public void OnScroll(PointerEventData eventData);
被选中的物体每帧调用
public void OnUpdateSelected(BaseEventData eventData);
物体被选中时
public void OnSelect(BaseEventData eventData);
物体从选中到取消选中时
public void OnDeselect(BaseEventData eventData);
物体移动时(与InputManager里的Horizontal和Vertica按键相对应),前提条件是物体被选中
public void OnMove(AxisEventData eventData);
提交按钮被按下时(与InputManager里的Submit按键相对应,PC上默认的是Enter键),前提条件是物体被选中
public void OnSubmit(BaseEventData eventData);
取消按钮被按下时(与InputManager里的Cancel按键相对应,PC上默认的是Esc键),前提条件是物体被选中
public void OnCancel(BaseEventData eventData);
大家可根据自己项目的需求继续拓展EventTriggerListener类,这里简单实现
Unity官方文档:http://docs.unity3d.com/460/Documentation/Manual/SupportedEvents.html
UIEventListener API简介,详细的了解官方文档
指针进入
public void OnPointerEnter(PointerEventData eventData);
指针退出
public void OnPointerExit(PointerEventData eventData);
指针按下
public void OnPointerDown(PointerEventData eventData);
指针释放(可能按下时的指针位置跟释放时的指针位置不同,这里指的是按下时指针指着的物体)
public void OnPointerUp(PointerEventData eventData);
在同一物体上按下并释放
public void OnPointerClick(PointerEventData eventData);
拖拽时的初始化,跟IPointerDownHandler差不多,在按下时调用
public void OnInitializePotentialDrag(PointerEventData eventData);
开始拖拽
public void OnBeginDrag(PointerEventData eventData);
拖拽中
public void OnDrag(PointerEventData eventData);
拖拽结束(被拖拽的物体调用)
public void OnEndDrag(PointerEventData eventData);
拖拽结束(拖拽结束后的位置(即鼠标位置)如果有物体,则那个物体调用)
public void OnDrop(PointerEventData eventData);
滚轮滚动
public void OnScroll(PointerEventData eventData);
被选中的物体每帧调用
public void OnUpdateSelected(BaseEventData eventData);
物体被选中时
public void OnSelect(BaseEventData eventData);
物体从选中到取消选中时
public void OnDeselect(BaseEventData eventData);
物体移动时(与InputManager里的Horizontal和Vertica按键相对应),前提条件是物体被选中
public void OnMove(AxisEventData eventData);
提交按钮被按下时(与InputManager里的Submit按键相对应,PC上默认的是Enter键),前提条件是物体被选中
public void OnSubmit(BaseEventData eventData);
取消按钮被按下时(与InputManager里的Cancel按键相对应,PC上默认的是Esc键),前提条件是物体被选中
public void OnCancel(BaseEventData eventData);
大家可根据自己项目的需求继续拓展EventTriggerListener类,这里简单实现
/// <summary> /// 事件触发监听 /// 实现对于任何对象的监听处理 /// </summary> public class EventTriggerListener : EventTrigger { /// <summary> /// 委托 /// </summary> /// <param name="Go"></param> public delegate void VoidDelegate(GameObject Go); public VoidDelegate onClick; public VoidDelegate onDown; public VoidDelegate onEnter; public VoidDelegate onExit; public VoidDelegate onUp; public VoidDelegate onSelect; public VoidDelegate onUpdateSelect; /// <summary> /// 得到“监听器”组件 /// </summary> /// <param name="go">监听的游戏对象</param> /// <returns> /// 监听器 /// </returns> public static EventTriggerListener Get(GameObject go) { EventTriggerListener lister = go.GetComponent<EventTriggerListener>(); if (!lister) { lister = go.AddComponent<EventTriggerListener>(); } return lister; } /// <summary> /// 在同一物体上按下并释放:单击 /// </summary> /// <param name="eventData"></param> public override void OnPointerClick(PointerEventData eventData) { if (onClick != null) { onClick(gameObject); } } /// <summary> /// 指针按下 /// </summary> /// <param name="eventData"></param> public override void OnPointerDown(PointerEventData eventData) { if (onDown != null) { onDown(gameObject); } } /// <summary> /// 指针进入 /// </summary> /// <param name="eventData"></param> public override void OnPointerEnter(PointerEventData eventData) { if (onEnter != null) { onEnter(gameObject); } } /// <summary> /// 指针退出 /// </summary> /// <param name="eventData"></param> public override void OnPointerExit(PointerEventData eventData) { if (onExit != null) { onExit(gameObject); } } /// <summary> /// 指针释放(可能按下时的指针位置跟释放时的指针位置不同,这里指的是按下时指针指着的物体) /// </summary> /// <param name="eventData"></param> public override void OnPointerUp(PointerEventData eventData) { if (onUp != null) { onUp(gameObject); } } /// <summary> /// 物体被选中时 /// </summary> /// <param name="eventBaseData"></param> public override void OnSelect(BaseEventData eventBaseData) { if (onSelect != null) { onSelect(gameObject); } } /// <summary> /// 被选中的物体每帧调用 /// </summary> /// <param name="eventBaseData"></param> public override void OnUpdateSelected(BaseEventData eventBaseData) { if (onUpdateSelect != null) { onUpdateSelect(gameObject); } } }
相关文章推荐
- Unity 新UI事件系统(EventSystem) Demo
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- [UnityUI]UGUI的事件系统
- SRPG游戏开发(十八)第六章 基本框架 - 三 消息事件系统(Message Center)
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- Unity游戏UI框架(九):实现多语言管理
- atitit ui引擎之道 游戏引擎之道.docx 1. 概念 2 1.1. (cocos,createjs,dom) 2 2. 游戏引擎的构成(图形引擎(渲染系统),控件部件系统,事件系统 ,布局
- Unity游戏UI框架(七):消息传递中心
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- 【学习笔记】 Unity中在点击UI时屏蔽游戏内点击事件
- RPG游戏中 使用unity3d 客户端 结合NGUI的UI系统框架
- Unity 游戏物体 EventTrigger 物体动态事件监听
- Android开发中的UI事件监听处理机制总结
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- 【Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- DXUT 框架函数介绍 学习开发游戏UI