【Unity3D】 EventManager事件管理器
来源:互联网 发布:ecshop微商城源码下载 编辑:程序博客网 时间:2024/06/02 16:55
/* * 事件管理器 * Claine * 2015.08.30 */using UnityEngine;using System.Collections;using System.Collections.Generic;/// <summary>/// 事件类型定义/// </summary>public enum EventDefinition{ Event_Com_Data,//分机数据 Event_Com_TimeOut,//倒计时结束 Event_OptionView_Change, Event_Input_Down, Event_Input_Up, Event_Input_Left, Event_Input_Right, Event_Input_Confirm,}/// <summary>/// 事件数据结构/// </summary>public class EventData{ public EventDefinition eventType; public Delegate_EventLogicCallBack callback;}/// <summary>/// 事件管理器/// </summary>public class EventManager { private static EventManager _instance; public static EventManager Instance { get { if (_instance == null) { _instance = new EventManager(); } return _instance; } } public void Init() { Debug.Log("事件管理器 ---- 启动成功"); } /// <summary> /// 事件缓存 /// </summary> private List<EventData> callbackList = new List<EventData>(); /// <summary> /// 事件监听 /// </summary> /// <param name="_eventType"></param> /// <param name="_callback"></param> public void AddListener(EventDefinition _eventType, Delegate_EventLogicCallBack _callback) { EventData eventData = callbackList.Find(a=>a.eventType == _eventType); if (eventData == null) { eventData = new EventData(); eventData.eventType = _eventType; eventData.callback = _callback; callbackList.Add(eventData); } else { eventData.callback += _callback; } } /// <summary> /// 移除监听 /// </summary> /// <param name="_eventType"></param> /// <param name="_callback"></param> public void RemoveListener(EventDefinition _eventType,Delegate_EventLogicCallBack _callback) { EventData eventData = callbackList.Find(a => a.eventType == _eventType); if (eventData != null) { eventData.callback -= _callback; if (eventData.callback == null) callbackList.Remove(eventData); } } /// <summary> /// 调度事件 /// </summary> /// <param name="_eventType"></param> /// <param name="_data"></param> public void DispatchEvent(EventDefinition _eventType,object _data = null) { EventData eventData = callbackList.Find(a => a.eventType == _eventType); if (eventData == null) { Debug.Log("Not Found Event:" + _eventType); } else { eventData.callback(_data); } }}//事件委托public delegate void Delegate_EventLogicCallBack(object _data = null);
0 0
- 【Unity3D】 EventManager事件管理器
- Unity3D C#事件管理:EventManager
- ZF2-事件管理器(The EventManager)
- storm事件管理器EventManager源码分析-event.clj
- storm事件管理器EventManager源码分析-event.clj
- 基于Unity3d SendMessage实现事件管理器
- EventManager
- ExtJs事件(自定义事件、on、eventManager)示例
- ExtJs事件(自定义事件、on、eventManager)示例
- 事件管理器
- ZendFramework3事件驱动架构核心模块zend-eventmanager
- UNITY3D音频管理器
- Unity3D基于帧管理器的移动管理器
- Unity3D 事件
- ExtJS学习之道:ExtJs事件(自定义事件、on、eventManager)示例
- 事件管理器设计备忘录
- 事件管理器想法.
- 事件管理器设计备忘录
- mysql两张表相同数据查询显示其中一张表的字段
- react-native试玩(26)-网页视图
- DiskLruCache
- 一元函数对象的使用例子
- UVA 11300 Spreading the Wealth
- 【Unity3D】 EventManager事件管理器
- 使用dbms_scheduler调用shell脚本
- LeetBoss
- 侧边栏添加区块-编辑丰富你的Magento边侧栏[添加显示区块]
- Angularjs实践之优化你的$watch
- Rotate Array
- 推荐这六本关于机器学习的书籍,并说说它们的优缺点
- Android Image 倒影
- R语言经典教材