/// <summary> /// 取消注册事件监听. /// </summary> /// <param name="index"></param> /// <param name="varFun"></param> public void UnRegisterEventReceiver(int index, EventFun varFun) { if (events.ContainsKey(index)) { events[index].Remove(varFun); } }
// -- event loop; -------------------------------------- void loopEvent() { while (mevents.Count > 0) { EventFun ef = mevents.Dequeue(); ef(); } }
//移除事件;varType:事件ID,varFun:等待被通知的方法; public void ReMoveEvent(int varType, EventFun <T> varFun) { List <EventFun <T> > funList; //如果有这个Key的键值对; if (mAllEvents.TryGetValue(varType, out funList)) { funList.Remove(varFun); } }
//添加事件;varType:事件ID,varFun:等待被通知的方法; public void AddEvent(int varType, EventFun <T> varFun) { List <EventFun <T> > funList; //如果没有这个Key的键值对; if (!mAllEvents.TryGetValue(varType, out funList)) { //创建一个新的方法集合; funList = new List <EventFun <T> >(); //将新的方法集合添加到字典(新的键值对); mAllEvents.Add(varType, funList); } //将等待被通知的方法加入到这件事情对应的集合; funList.Add(varFun); }
/// <summary> /// 注册事件. /// </summary> /// <param name="index"></param> /// <param name="varFun"></param> public void RegisterEventReceiver(int index, EventFun varFun) { List <EventFun> eventFun = null; if (events.TryGetValue(index, out eventFun)) { eventFun.Add(varFun); } else { eventFun = new List <EventFun>(); eventFun.Add(varFun); events.Add(index, eventFun); } }
/// <summary> /// 解注册事件 /// </summary> /// <param name="type">事件类型</param> /// <param name="fun">需解的事件</param> public static void UnRegister(GameEventType type, EventFun <object> fun) { eventMan.UnRegisterEvent((int)type, fun); }
/// <summary> /// 解注册 /// </summary> /// <param name="state">事件ID</param> /// <param name="fun">需解注册的事件</param> public void UnRegisterEvent(PlayerCtrlState state, EventFun <object> fun) { eventMan.UnRegisterEvent((int)state, fun); }