c#游戏事件系统
来源:互联网 发布:墨尔本公立学校知乎 编辑:程序博客网 时间:2024/05/21 09:12
/// <summary>/// 游戏事件分发器,用于监听、广播游戏事件。/// </summary>public static class EventDispatcher{ public delegate void EventListener(Dictionary<string, object> args); /// <summary> /// 广播指定事件。 /// </summary> /// <param name="eventId">事件编号</param> /// <param name="args">事件参数</param> public static void Dispatch(int eventId, Dictionary<string, object> args = null) { var luaListeners = getLuaEventListener(eventId); for (var i = 0; i < luaListeners.Count; i++) { var listener = luaListeners[i]; listener.Function.Call(listener.Self, args); } var listeners = getEventListeners(eventId); for (var i = 0; i < listeners.Count; i++) listeners[i].Invoke(args); } /// <summary> /// 添加对指定事件的监听。 /// </summary> /// <param name="eventId">事件编号</param> /// <param name="listener">回调委托</param> [NoToLua] public static void AddListener(int eventId, EventListener listener) { var listeners = getEventListeners(eventId); listeners.Add(listener); } /// <summary> /// 移除对指定事件的监听。 /// </summary> /// <param name="eventId">事件编号</param> /// <param name="listenerToBeRemoved">回调委托</param> [NoToLua] public static void RemoveListener(int eventId, EventListener listenerToBeRemoved) { var listeners = getEventListeners(eventId); for (var i = 0; i < listeners.Count; i++) { var listener = listeners[i]; if (listener == listenerToBeRemoved) { listeners.RemoveAt(i); break; } } } /// <summary> /// 清除所有的事件监听器。 /// </summary> public static void Clear() { _listeners.Clear(); _luaListeners.Clear(); } private static List<EventListener> getEventListeners(int eventId) { List<EventListener> ret; if (_listeners.TryGetValue(eventId, out ret)) return ret; ret = new List<EventListener>(); _listeners.Add(eventId, ret); return ret; } private static readonly Dictionary<int, List<EventListener>> _listeners = new Dictionary<int, List<EventListener>>();}
阅读全文
0 0
- c#游戏事件系统
- c#读写系统事件日志
- Unity3D游戏开发中的C#事件
- 游戏事件系统(Game Event/Message System)
- unity3d游戏客户端事件系统实现
- C#注销或系统关机等事件
- C# 高效简洁的事件系统
- UnityEvent与C#事件系统性能对比
- 用扫雷游戏说明c#按钮动态绑定鼠标事件
- 一个基于observer模式的游戏事件分发系统
- 一个基于observer模式的游戏事件分发系统
- 一个基于observer模式的游戏事件分发系统
- Unity游戏UI框架(八):监听事件系统
- 用C#编程删除系统自带游戏
- JS系统事件,C#绝对值,两个时间时间差
- C#接收Windows系统的关机(注销)事件
- 游戏。系统
- 游戏系统
- NYOJ17and16
- EF架构~让mysql支持DbFunctions扩展函数
- 《C语言程序设计现代方法》笔记
- js(javascript>中关于节点的方法和属性
- 5 排序检索:order by
- c#游戏事件系统
- java对redis的基本操作
- java 多线程打印1到75个数
- iOS App的国际化,以及App内的语言切换
- 对象的使用练习
- 简单弹框
- FIFO队列和优先队列
- ViewPager+Fragment实现滑动效果,并且能够点击切换
- myeclipse 导入maven工程 resources 下的文件不能编译,在target下没有产生.class文件