/// <summary> /// 发送消息,必须实现接口IMsgSender /// </summary> public static void SendLogicMsg(this IMsgSender sender, int msgName, IMsgParam paramList) { if (msgName == 0) { return; } if (!mMsgHandlerDict.ContainsKey(msgName)) { return; } List <LogicMsgHandler> handlers = mMsgHandlerDict[msgName]; int handlerCount = handlers.Count; // 之所以是从后向前遍历,是因为从前向后遍历删除后索引值会不断变化 for (int i = handlerCount - 1; i >= 0; i--) { LogicMsgHandler handler = handlers[i]; if (handler.Receiver != null) { handler.Callback(paramList); } else { handlers.Remove(handler); } } }
private void ReceiveMsg(IMsgParam args) { MsgParam <string> msgParam = args as MsgParam <string>; Debug.Log(msgParam.param); //MsgParamObject msgParamObject = args as MsgParamObject; //foreach (var arg in msgParamObject.param) //{ // //Debug.Log(arg); // arg.Invoke(); //} }