Example #1
0
        /// <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);
                }
            }
        }
Example #2
0
    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();
        //}
    }