private static void OnReceiveData() { //消息长度 if (buffCount <= 2) { return; } byte[] bytes = readBuff.bytes; //获取消息体长度 int readIdx = readBuff.readIdx; short bodyLength = (short)((bytes[readIdx + 1] << 8) | bytes[readIdx]); if (readBuff.length < bodyLength) { return; } readBuff.readIdx += 2; //解析协议名 int nameCount = 0; string protoName = NetMsgBase.DecodeName(readBuff.bytes, readBuff.readIdx, out nameCount); if (protoName == "") { Debug.Log("OnReceiveData MsgBase.DecodeName fail"); return; } readBuff.readIdx += nameCount; //解析协议体 int bodyCount = bodyLength - nameCount; NetMsgBase msgBase = NetMsgBase.Decode(protoName, readBuff.bytes, readBuff.readIdx, bodyCount); readBuff.readIdx += bodyCount; readBuff.CheckAndMoveBytes(); //添加到消息队列 lock (msgList) { msgList.Add(msgBase); } msgCount++; //继续读取消息 if (readBuff.length > 2) { OnReceiveData(); } }