/// <summary> /// 处理接收的消息 /// </summary> private void HandleRecvMsg() { if (!mReceiveMsgQueue.IsEmpty) { lock (mReceiveLock) { var data = mReceiveMsgQueue.Dequeue(); // BitConverter.ToInt32(data, 0) 有大端和小端问题,不如直接手动转 var msgId = BytesUtil.ReadInt(data, 0); // NetMsg里定义了协议Id和协议类型的映射,所有比较耦合 var type = NetMsg.GetTypeByMsgId(msgId); var response = ProtobufUtil.NDeserialize(type, data, sizeof(int)); Debugger.Log(msgId); Debugger.Log(response); HandlerEventListener(msgId, response); } } }