public override void Update() { for (int i = 0; i < packets.Count; i++) { SortedDictionary <int, byte[]> pack = packets[i]; lock (pack) { try { foreach (var each in pack) { ms.SetLength(0); ms.Write(each.Value, 0, each.Value.Length); ms.Seek(0, SeekOrigin.Begin); TcpClientProxy.Ins.endPing = Time.time; TcpClientProxy.Ins.ping = Mathf.FloorToInt(1000 * (TcpClientProxy.Ins.endPing - TcpClientProxy.Ins.startPing)); Main.Ins.EventBus.Fire(EventId.PingChanged); switch (each.Key) { case (int)MeteorMsg.MsgType.ProtocolVerify: //ms = new MemoryStream(each.Value); ProtocolVerifyRsp rspVer = Serializer.Deserialize <ProtocolVerifyRsp>(ms); OnVerifyResult(rspVer); break; case (int)MeteorMsg.MsgType.AliveUpdate: TcpClientProxy.Ins.HeartBeat(); break; case (int)MeteorMsg.MsgType.GetRoomRsp: //ms = new MemoryStream(each.Value); GetRoomRsp rspG = Serializer.Deserialize <GetRoomRsp>(ms); OnGetRoomRsp(rspG); break; case (int)MeteorMsg.MsgType.JoinRoomRsp: //ms = new MemoryStream(each.Value); JoinRoomRsp rspJ = Serializer.Deserialize <JoinRoomRsp>(ms); ClientJoinRoomRsp(rspJ); break; case (int)MeteorMsg.MsgType.CreateRoomRsp: //ms = new MemoryStream(each.Value); CreateRoomRsp rspC = Serializer.Deserialize <CreateRoomRsp>(ms); OnCreateRoomRsp(rspC); break; case (int)MeteorMsg.MsgType.OnPlayerJoinRoom: //ms = new MemoryStream(each.Value); OnPlayerJoinRoom rspOE = Serializer.Deserialize <OnPlayerJoinRoom>(ms); OnPlayerEnterRoomRsp(rspOE); break; //case (int)MeteorMsg.MsgType.UserRebornSB2C: // ms = new MemoryStream(each.Value); // OnEnterLevelRsp rspReborn = ProtoBuf.Serializer.Deserialize<OnEnterLevelRsp>(ms); // OnUserRebornRsp_(rspReborn); // break; //case (int)MeteorMsg.MsgType.OnLeaveRoomRsp: // ms = new MemoryStream(each.Value); // OnLeaveRoomRsp rspL = ProtoBuf.Serializer.Deserialize<OnLeaveRoomRsp>(ms); // OnLeaveRoomRsp_(rspL); // break; case (int)MeteorMsg.MsgType.OnPlayerEnterLevel: //其他玩家进入关卡 //ms = new MemoryStream(each.Value); PlayerEvent rspEnterLevel = Serializer.Deserialize <PlayerEvent>(ms); OnPlayerEnterLevel(rspEnterLevel); break; case (int)MeteorMsg.MsgType.EnterLevelRsp: //自己进入关卡,拉取到场景里所有已知角色 //ms = new MemoryStream(each.Value); OnEnterLevelRsp EnterLevel = Serializer.Deserialize <OnEnterLevelRsp>(ms); OnEnterLevel(EnterLevel); break; case (int)MeteorMsg.MsgType.ChatInRoomRsp: //ms = new MemoryStream(each.Value); ChatMsg chatRsp = Serializer.Deserialize <ChatMsg>(ms); OnReceiveChatMsg(chatRsp); break; //case (int)MeteorMsg.MsgType.AudioChat: // //ms = new MemoryStream(each.Value); // AudioChatMsg audioRsp = Serializer.Deserialize<AudioChatMsg>(ms); // OnReceiveAudioMsg(audioRsp); // break; case (int)MeteorMsg.MsgType.OnPlayerLeaveLevel: //其他玩家离开关卡 //ms = new MemoryStream(each.Value); PlayerEvent rspLeaveLevel = Serializer.Deserialize <PlayerEvent>(ms); OnPlayerLeaveLevel(rspLeaveLevel); break; case (int)MeteorMsg.MsgType.SyncRate: //KCP识别出错,关闭旧的KCP,创建新的 SyncMsg syncRate = Serializer.Deserialize <SyncMsg>(ms); FrameSyncServer.Ins.ChangeSyncRate(syncRate.syncrate); break; } } } catch (Exception exp) { UnityEngine.Debug.LogError(exp.Message + exp.StackTrace); } finally { pack.Clear(); } } } lock (messageQueue) { int length = messageQueue.Count; for (int i = 0; i < length; i++) { switch (messageQueue[i].Message) { case (short)LocalMsgType.TimeOut: OnTimeOut(messageQueue[i].Result, messageQueue[i].message); break; case (short)LocalMsgType.Connect: OnConnect(messageQueue[i].Result, messageQueue[i].message); break; case (short)LocalMsgType.DisConnect: OnDisconnect(); break; case (short)LocalMsgType.SendFTPLogComplete: OnSendComplete(messageQueue[i].Result, messageQueue[i].Param); break; case (short)LocalMsgType.SaveRecord: OnSaveRecord(messageQueue[i]); break; } } messageQueue.Clear(); } }
void OnPlayerEnterRoomRsp(OnPlayerJoinRoom rsp) { U3D.InsertSystemMsg(rsp.nick + "进入了房间"); //Debug.LogError(rsp.nick + "进入了房间"); }