From a4b39f36bbffc2ea81617a0b73e796aff9c4be17 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Thu, 6 Nov 2025 15:09:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B2=E6=8E=89=EF=BC=8C=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E5=8F=91=E9=80=81=E5=92=8C=E4=BA=A7=E7=94=9FProtobuff?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=BA=8F=E5=88=97=E5=8C=96=E6=97=B6=E7=9A=84?= =?UTF-8?q?byte[]=E5=88=86=E9=85=8D=EF=BC=8C=E4=BD=BF=E7=94=A8Byte[]?= =?UTF-8?q?=E6=B1=A0=E5=8C=96=E7=A7=9F=E7=94=A8=E5=92=8C=E5=A4=8D=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Plugins/AxiReplay/NetReplay.cs | 2 +- .../Script/AppMain/Common/ProtoBufHelper.cs | 13 +++++++ .../Assets/Script/AppMain/EmuCore.cs | 2 +- .../Assets/Script/AppMain/Manager/AppChat.cs | 8 ++-- .../Assets/Script/AppMain/Manager/AppLogin.cs | 15 +++----- .../Assets/Script/AppMain/Manager/AppRoom.cs | 28 +++++++------- .../Assets/Script/AppMain/Manager/AppShare.cs | 21 +++++------ .../Manager/SaveSlotManager/SavCloudApi.cs | 37 ++++++++----------- .../Script/AppMain/Manager/UserDataManager.cs | 18 ++++----- .../Assets/Script/AppMain/MonoCom/TickLoop.cs | 19 ++++------ .../Assets/Script/AppMain/Network/NetMsg.cs | 5 ++- .../Script/AppMain/Network/NetworkHelper.cs | 35 +++++++++++++++++- 12 files changed, 115 insertions(+), 88 deletions(-) diff --git a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs index f8c5ef90..e00b39a3 100644 --- a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs +++ b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs @@ -55,7 +55,7 @@ namespace AxiReplay mRemoteForwardCount = (int)ServerForwardCount; mNetReplayQueue.Enqueue(inputData); #if UNITY_EDITOR - Debug.Log($"InData=>{inputData.FrameStartID} QCount = >{mNetReplayQueue.Count}"); + //Debug.Log($"InData=>{inputData.FrameStartID} QCount = >{mNetReplayQueue.Count}"); #endif mRemoteFrameIdx = inputData.FrameStartID; if (!bNetInit) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Common/ProtoBufHelper.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Common/ProtoBufHelper.cs index 59952fa3..9fc6d905 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Common/ProtoBufHelper.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Common/ProtoBufHelper.cs @@ -1,5 +1,6 @@ using AxibugEmuOnline.Client.Network; using Google.Protobuf; +using HaoYueNet.ClientNetwork; using System; namespace AxibugEmuOnline.Client.Common @@ -7,6 +8,18 @@ namespace AxibugEmuOnline.Client.Common public static class ProtoBufHelper { private static ProtobufferMsgPool _msgPool = new ProtobufferMsgPool(); + + public static void RentSerizlizeData(IMessage msg, out byte[] data, out int usedlength) + { + usedlength = msg.CalculateSize(); + data = BytesArrayPool.RentBuffer(usedlength); + msg.WriteTo(data.AsSpan(0, usedlength)); + } + public static void ReturnSerizlizeData(byte[] data) + { + BytesArrayPool.ReturnBuffer(data); + } + public static byte[] Serizlize(IMessage msg) { return msg.ToByteArray(); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/EmuCore.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/EmuCore.cs index 55779b19..21ec1bea 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/EmuCore.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/EmuCore.cs @@ -76,7 +76,7 @@ namespace AxibugEmuOnline.Client if (IsNetPlay) //skip frame handle { var skipFrameCount = App.roomMgr.netReplay.GetSkipFrameCount(); - if (skipFrameCount > 0) App.log.Debug($"SKIP FRAME : {skipFrameCount} ,CF:{App.roomMgr.netReplay.mCurrClientFrameIdx},RFIdx:{App.roomMgr.netReplay.mRemoteFrameIdx},RForward:{App.roomMgr.netReplay.mRemoteForwardCount} ,queue:{App.roomMgr.netReplay.mNetReplayQueue.Count}"); + //if (skipFrameCount > 0) App.log.Debug($"SKIP FRAME : {skipFrameCount} ,CF:{App.roomMgr.netReplay.mCurrClientFrameIdx},RFIdx:{App.roomMgr.netReplay.mRemoteFrameIdx},RForward:{App.roomMgr.netReplay.mRemoteForwardCount} ,queue:{App.roomMgr.netReplay.mNetReplayQueue.Count}"); for (var i = 0; i < skipFrameCount; i++) { if (!TryPushEmulatorFrame()) break; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppChat.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppChat.cs index 935cd0f2..7caa681d 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppChat.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppChat.cs @@ -8,6 +8,7 @@ namespace AxibugEmuOnline.Client.Manager { public class AppChat { + Protobuf_ChatMsg _Protobuf_ChatMsg = new Protobuf_ChatMsg(); public AppChat() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdChatmsg, RecvChatMsg); @@ -15,11 +16,8 @@ namespace AxibugEmuOnline.Client.Manager public void SendChatMsg(string ChatMsg) { - Protobuf_ChatMsg msg = new Protobuf_ChatMsg() - { - ChatMsg = ChatMsg, - }; - App.network.SendToServer((int)CommandID.CmdChatmsg, ProtoBufHelper.Serizlize(msg)); + _Protobuf_ChatMsg.ChatMsg = ChatMsg; + App.network.SendToServer((int)CommandID.CmdChatmsg, _Protobuf_ChatMsg); } public void RecvChatMsg(Protobuf_ChatMsg_RESP msg) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppLogin.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppLogin.cs index 3af7c49a..289a50c4 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppLogin.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppLogin.cs @@ -11,7 +11,7 @@ namespace AxibugEmuOnline.Client.Manager public class AppLogin { static string LastLoginGuid = ""; - + static Protobuf_Login _Protobuf_Login = new Protobuf_Login(); public AppLogin() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdLogin, RecvLoginMsg); @@ -57,18 +57,15 @@ namespace AxibugEmuOnline.Client.Manager break; } - Protobuf_Login msg = new Protobuf_Login() - { - LoginType = LoginType.UseDevice, - DeviceStr = Initer.dev_UUID, - DeviceType = devType, - }; + _Protobuf_Login.LoginType = LoginType.UseDevice; + _Protobuf_Login.DeviceStr = Initer.dev_UUID; + _Protobuf_Login.DeviceType = devType; - App.network.SendToServer((int)CommandID.CmdLogin, ProtoBufHelper.Serizlize(msg)); + App.network.SendToServer((int)CommandID.CmdLogin, _Protobuf_Login); } public void RecvLoginMsg(Protobuf_Login_RESP msg) - { + { if (msg.Status == LoginResultStatus.Ok) { App.log.Info("登录成功"); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs index 0d805251..c33d9f51 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs @@ -39,6 +39,7 @@ namespace AxibugEmuOnline.Client.Manager Protobuf_Room_Player_Ready _Protobuf_Room_Player_Ready = new Protobuf_Room_Player_Ready(); Protobuf_Room_SinglePlayerInputData _Protobuf_Room_SinglePlayerInputData = new Protobuf_Room_SinglePlayerInputData(); Protobuf_Screnn_Frame _Protobuf_Screnn_Frame = new Protobuf_Screnn_Frame(); + Protobuf_Room_HostPlayer_UpdateStateRaw _Protobuf_Room_HostPlayer_UpdateStateRaw = new Protobuf_Room_HostPlayer_UpdateStateRaw(); public AppRoom() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomList, RecvGetRoomList); @@ -146,7 +147,7 @@ namespace AxibugEmuOnline.Client.Manager public void SendGetRoomList() { App.log.Info("拉取房间列表"); - App.network.SendToServer((int)CommandID.CmdRoomList, ProtoBufHelper.Serizlize(_Protobuf_Room_List)); + App.network.SendToServer((int)CommandID.CmdRoomList, _Protobuf_Room_List); } /// @@ -195,7 +196,7 @@ namespace AxibugEmuOnline.Client.Manager { _Protobuf_Room_Get_Screen.RoomID = RoomID; App.log.Info($"获取房间画面快照"); - App.network.SendToServer((int)CommandID.CmdRoomGetScreen, ProtoBufHelper.Serizlize(_Protobuf_Room_Get_Screen)); + App.network.SendToServer((int)CommandID.CmdRoomGetScreen, _Protobuf_Room_Get_Screen); } /// /// 获取单个房间画面 @@ -220,7 +221,7 @@ namespace AxibugEmuOnline.Client.Manager _Protobuf_Room_Create.GameRomID = GameRomID; _Protobuf_Room_Create.GameRomHash = GameRomHash; App.log.Info($"创建房间"); - App.network.SendToServer((int)CommandID.CmdRoomCreate, ProtoBufHelper.Serizlize(_Protobuf_Room_Create)); + App.network.SendToServer((int)CommandID.CmdRoomCreate, _Protobuf_Room_Create); } /// @@ -247,7 +248,7 @@ namespace AxibugEmuOnline.Client.Manager { _Protobuf_Room_Join.RoomID = RoomID; App.log.Info($"加入房间"); - App.network.SendToServer((int)CommandID.CmdRoomJoin, ProtoBufHelper.Serizlize(_Protobuf_Room_Join)); + App.network.SendToServer((int)CommandID.CmdRoomJoin, _Protobuf_Room_Join); } /// @@ -275,7 +276,7 @@ namespace AxibugEmuOnline.Client.Manager return; _Protobuf_Room_Leave.RoomID = mineRoomMiniInfo.RoomID; App.log.Info($"LeavnRoom"); - App.network.SendToServer((int)CommandID.CmdRoomLeave, ProtoBufHelper.Serizlize(_Protobuf_Room_Leave)); + App.network.SendToServer((int)CommandID.CmdRoomLeave, _Protobuf_Room_Leave); } /// @@ -438,7 +439,7 @@ namespace AxibugEmuOnline.Client.Manager } App.log.Info($"SendChangePlaySlotIdxWithJoyIdx"); - App.network.SendToServer((int)CommandID.CmdRoomChangePlayerWithJoy, ProtoBufHelper.Serizlize(_Protobuf_Room_Change_PlaySlotWithJoy)); + App.network.SendToServer((int)CommandID.CmdRoomChangePlayerWithJoy, _Protobuf_Room_Change_PlaySlotWithJoy); } /// /// 上报即时存档 @@ -448,12 +449,10 @@ namespace AxibugEmuOnline.Client.Manager { //压缩 byte[] compressRawData = Helper.CompressByteArray(RawData); - Protobuf_Room_HostPlayer_UpdateStateRaw msg = new Protobuf_Room_HostPlayer_UpdateStateRaw() - { - LoadStateRaw = Google.Protobuf.ByteString.CopyFrom(compressRawData) - }; + _Protobuf_Room_HostPlayer_UpdateStateRaw.LoadStateRaw = Google.Protobuf.ByteString.CopyFrom(compressRawData); App.log.Info($"上报即时存档数据 原数据大小:{RawData.Length},压缩后;{compressRawData.Length}"); - App.network.SendToServer((int)CommandID.CmdRoomHostPlayerUpdateStateRaw, ProtoBufHelper.Serizlize(msg)); + App.network.SendToServer((int)CommandID.CmdRoomHostPlayerUpdateStateRaw, _Protobuf_Room_HostPlayer_UpdateStateRaw); + _Protobuf_Room_HostPlayer_UpdateStateRaw.Reset(); } void RecvRoom_WaitStep(Protobuf_Room_WaitStep_RESP msg) @@ -491,7 +490,7 @@ namespace AxibugEmuOnline.Client.Manager _Protobuf_Room_Player_Ready.LoadStateNeedTimeUs = LoadStateNeedTimeUs; _Protobuf_Room_Player_Ready.VideoFrameShowNeedTimeUs = VideoFrameShowNeedTimeUs; _Protobuf_Room_Player_Ready.AudioFramePlayNeedTimeUs = AudioFramePlayNeedTimeUs; - App.network.SendToServer((int)CommandID.CmdRoomPlayerReady, ProtoBufHelper.Serizlize(_Protobuf_Room_Player_Ready)); + App.network.SendToServer((int)CommandID.CmdRoomPlayerReady, _Protobuf_Room_Player_Ready); } /// @@ -501,7 +500,7 @@ namespace AxibugEmuOnline.Client.Manager { _Protobuf_Room_SinglePlayerInputData.FrameID = FrameID; _Protobuf_Room_SinglePlayerInputData.InputData = InputData; - App.network.SendToServer((int)CommandID.CmdRoomSingelPlayerInput, ProtoBufHelper.Serizlize(_Protobuf_Room_SinglePlayerInputData)); + App.network.SendToServer((int)CommandID.CmdRoomSingelPlayerInput, _Protobuf_Room_SinglePlayerInputData); } ulong TestAllData = 0; @@ -521,7 +520,8 @@ namespace AxibugEmuOnline.Client.Manager byte[] comData = Helper.CompressByteArray(RenderBuffer); _Protobuf_Screnn_Frame.FrameID = 0; _Protobuf_Screnn_Frame.RawBitmap = ByteString.CopyFrom(comData); - App.network.SendToServer((int)CommandID.CmdScreen, ProtoBufHelper.Serizlize(_Protobuf_Screnn_Frame)); + App.network.SendToServer((int)CommandID.CmdScreen, _Protobuf_Screnn_Frame); + _Protobuf_Screnn_Frame.Reset(); } public void OnScreen(Protobuf_Screnn_Frame msg) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppShare.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppShare.cs index 0a1facea..3b4041bb 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppShare.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppShare.cs @@ -9,6 +9,8 @@ namespace AxibugEmuOnline.Client.Manager { public class AppShare { + static Protobuf_Game_Mark _Protobuf_Game_Mark = new Protobuf_Game_Mark(); + static Protobuf_GameScreen_Img_Upload _Protobuf_GameScreen_Img_Upload = new Protobuf_GameScreen_Img_Upload(); public AppShare() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdGameMark, RecvGameStar); @@ -22,13 +24,10 @@ namespace AxibugEmuOnline.Client.Manager /// [0]取消收藏[1]收藏 public void SendGameStar(int RomID, int Motion) { - Protobuf_Game_Mark req = new Protobuf_Game_Mark() - { - Motion = Motion, - RomID = RomID, - }; + _Protobuf_Game_Mark.Motion = Motion; + _Protobuf_Game_Mark.RomID = RomID; App.log.Info($"SendGameStar"); - App.network.SendToServer((int)CommandID.CmdGameMark, ProtoBufHelper.Serizlize(req)); + App.network.SendToServer((int)CommandID.CmdGameMark, _Protobuf_Game_Mark); } /// @@ -50,16 +49,14 @@ namespace AxibugEmuOnline.Client.Manager //压缩 byte[] compressImgData = Helper.CompressByteArray(SavImgData); - Protobuf_GameScreen_Img_Upload req = new Protobuf_GameScreen_Img_Upload() - { - RomID = RomID, - SavImg = Google.Protobuf.ByteString.CopyFrom(compressImgData), - }; + _Protobuf_GameScreen_Img_Upload.RomID = RomID; + _Protobuf_GameScreen_Img_Upload.SavImg = Google.Protobuf.ByteString.CopyFrom(compressImgData); App.log.Info($"SendUpLoadGameScreenCover"); App.log.Info($"上传截图 原数据大小:{SavImgData.Length},压缩后;{compressImgData.Length}"); - App.network.SendToServer((int)CommandID.CmdGamescreenImgUpload, ProtoBufHelper.Serizlize(req)); + App.network.SendToServer((int)CommandID.CmdGamescreenImgUpload, _Protobuf_GameScreen_Img_Upload); + _Protobuf_GameScreen_Img_Upload.Reset(); } private void RecvGamescreenImgUpload(Protobuf_GameScreen_Img_Upload_RESP msg) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/SaveSlotManager/SavCloudApi.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/SaveSlotManager/SavCloudApi.cs index 66445fd8..c922ccdc 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/SaveSlotManager/SavCloudApi.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/SaveSlotManager/SavCloudApi.cs @@ -18,6 +18,10 @@ namespace AxibugEmuOnline.Client public delegate void OnUploadedSavDataHandle(int romID, int slotIndex, Protobuf_Mine_GameSavInfo savInfo); public event OnUploadedSavDataHandle OnUploadedSavData; + static Protobuf_Mine_DelGameSav _Protobuf_Mine_DelGameSav = new Protobuf_Mine_DelGameSav(); + static Protobuf_Mine_UpLoadGameSav _Protobuf_Mine_UpLoadGameSav = new Protobuf_Mine_UpLoadGameSav(); + static Protobuf_Mine_GetGameSavList _Protobuf_Mine_GetGameSavList = new Protobuf_Mine_GetGameSavList(); + public SavCloudApi() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdGamesavGetGameSavList, RecvGetGameSavList); @@ -33,13 +37,9 @@ namespace AxibugEmuOnline.Client public void SendGetGameSavList(int RomID) { if (m_fetchingRomIDs.Contains(RomID)) return; - - Protobuf_Mine_GetGameSavList req = new Protobuf_Mine_GetGameSavList() - { - RomID = RomID, - }; + _Protobuf_Mine_GetGameSavList.RomID = RomID; App.log.Info($"SendGetGameSavList"); - App.network.SendToServer((int)CommandID.CmdGamesavGetGameSavList, ProtoBufHelper.Serizlize(req)); + App.network.SendToServer((int)CommandID.CmdGamesavGetGameSavList, _Protobuf_Mine_GetGameSavList); } void RecvGetGameSavList(Protobuf_Mine_GetGameSavList_RESP msg) @@ -62,13 +62,10 @@ namespace AxibugEmuOnline.Client /// public void SendDelGameSavList(int RomID, int SavDataIdx) { - Protobuf_Mine_DelGameSav req = new Protobuf_Mine_DelGameSav() - { - RomID = RomID, - SavDataIdx = SavDataIdx - }; + _Protobuf_Mine_DelGameSav.RomID = RomID; + _Protobuf_Mine_DelGameSav.SavDataIdx = SavDataIdx; App.log.Info($"SendDelGameSavList"); - App.network.SendToServer((int)CommandID.CmdGamesavDelGameSav, ProtoBufHelper.Serizlize(req)); + App.network.SendToServer((int)CommandID.CmdGamesavDelGameSav, _Protobuf_Mine_DelGameSav); } void RecvDelGameSavList(Protobuf_Mine_DelGameSav_RESP msg) @@ -89,20 +86,18 @@ namespace AxibugEmuOnline.Client //压缩 byte[] compressImgData = Helper.CompressByteArray(SavImgData); - Protobuf_Mine_UpLoadGameSav req = new Protobuf_Mine_UpLoadGameSav() - { - RomID = RomID, - SavDataIdx = SavDataIdx, - StateRaw = Google.Protobuf.ByteString.CopyFrom(compressRawData), - SavImg = Google.Protobuf.ByteString.CopyFrom(compressImgData), - Sequence = (int)sequence - }; + _Protobuf_Mine_UpLoadGameSav.RomID = RomID; + _Protobuf_Mine_UpLoadGameSav.SavDataIdx = SavDataIdx; + _Protobuf_Mine_UpLoadGameSav.StateRaw = Google.Protobuf.ByteString.CopyFrom(compressRawData); + _Protobuf_Mine_UpLoadGameSav.SavImg = Google.Protobuf.ByteString.CopyFrom(compressImgData); + _Protobuf_Mine_UpLoadGameSav.Sequence = (int)sequence; App.log.Info($"SendDelGameSavList"); App.log.Info($"上传即时存档数据 原数据大小:{RawData.Length},压缩后;{compressRawData.Length}"); App.log.Info($"上传截图 原数据大小:{SavImgData.Length},压缩后;{compressImgData.Length}"); - App.network.SendToServer((int)CommandID.CmdGamesavUploadGameSav, ProtoBufHelper.Serizlize(req)); + App.network.SendToServer((int)CommandID.CmdGamesavUploadGameSav, _Protobuf_Mine_UpLoadGameSav); + _Protobuf_Mine_UpLoadGameSav.Reset(); } void RecvUpLoadGameSav(Protobuf_Mine_UpLoadGameSav_RESP msg) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/UserDataManager.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/UserDataManager.cs index 0bb2af69..c0e9b2db 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/UserDataManager.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/UserDataManager.cs @@ -43,6 +43,10 @@ namespace AxibugEmuOnline.Client.Manager public string Token => userdata.IsLoggedIn ? userdata.Token : string.Empty; Dictionary DictUID2User = new Dictionary(); public int OnlinePlayerCount => DictUID2User.Count; + + static Protobuf_UserList _Protobuf_UserList = new Protobuf_UserList(); + static Protobuf_Modify_NickName _Protobuf_Modify_NickName = new Protobuf_Modify_NickName(); + public void InitMainUserData(string UName, long UID, string token) { userdata.NickName = UName; @@ -147,10 +151,7 @@ namespace AxibugEmuOnline.Client.Manager /// public void Send_GetUserList() { - Protobuf_UserList msg = new Protobuf_UserList() - { - }; - App.network.SendToServer((int)CommandID.CmdUserOnlinelist, ProtoBufHelper.Serizlize(msg)); + App.network.SendToServer((int)CommandID.CmdUserOnlinelist, _Protobuf_UserList); } public void RecvUserOnlinelist(Protobuf_UserList_RESP msg) @@ -179,18 +180,14 @@ namespace AxibugEmuOnline.Client.Manager { RemoveUser(msg.UID); } - /// /// 发送修改昵称请求 /// /// public void Send_ModifyNickName(string NickName) { - Protobuf_Modify_NickName msg = new Protobuf_Modify_NickName() - { - NickName = NickName - }; - App.network.SendToServer((int)CommandID.CmdModifyNickName, ProtoBufHelper.Serizlize(msg)); + _Protobuf_Modify_NickName.NickName = NickName; + App.network.SendToServer((int)CommandID.CmdModifyNickName, _Protobuf_Modify_NickName); } void RecvModifyNickName(Protobuf_Modify_NickName_RESP msg) @@ -212,6 +209,5 @@ namespace AxibugEmuOnline.Client.Manager App.roomMgr.ChangeCurrRoomPlayerName(msg.UID); Eventer.Instance.PostEvent(EEvent.OnOtherUserInfoUpdate, msg.UID); } - } } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/MonoCom/TickLoop.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/MonoCom/TickLoop.cs index b2722b4b..09732163 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/MonoCom/TickLoop.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/MonoCom/TickLoop.cs @@ -24,6 +24,9 @@ namespace AxibugEmuOnline.Client public double MaxNetDelay; public List NetDelays = new List(); public const int NetAveDelayCount = 3; + + static Protobuf_Ping _Protobuf_Ping = new Protobuf_Ping(); + static Protobuf_Pong _Protobuf_Pong = new Protobuf_Pong(); private void Awake() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdPing, OnCmdPing); @@ -89,22 +92,14 @@ namespace AxibugEmuOnline.Client int randSeed = new System.Random().Next(0, int.MaxValue); LastPingSeed = randSeed; LastStartPingTime = App.tick.sw.Elapsed; - Protobuf_Ping resp = new Protobuf_Ping() - { - Seed = randSeed, - }; - App.network.SendToServer((int)CommandID.CmdPing, ProtoBufHelper.Serizlize(resp)); + _Protobuf_Ping.Seed = randSeed; + App.network.SendToServer((int)CommandID.CmdPing, _Protobuf_Ping); } - - public void OnCmdPing(Protobuf_Ping msg) { //App.log.Debug($"OnCmdPing"); - Protobuf_Pong resp = new Protobuf_Pong() - { - Seed = msg.Seed, - }; - App.network.SendToServer((int)CommandID.CmdPong, ProtoBufHelper.Serizlize(resp)); + _Protobuf_Pong.Seed = msg.Seed; + App.network.SendToServer((int)CommandID.CmdPong, _Protobuf_Pong); } public void OnCmdPong(Protobuf_Pong msg) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetMsg.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetMsg.cs index febaaab2..f6307286 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetMsg.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetMsg.cs @@ -3,7 +3,6 @@ using AxibugProtobuf; using Google.Protobuf; using System; using System.Collections.Generic; -using System.Linq; using AxibugEmuOnline.Client.Common; namespace AxibugEmuOnline.Client.Network @@ -189,6 +188,10 @@ namespace AxibugEmuOnline.Client.Network App.log.Error("错误:" + errMsg); } +#if UNITY_EDITOR + //if (cmd > (int)CommandID.CmdPong) + //App.log.Info("[NET]" + cmd + "|" + (CommandID)cmd + "| ERRCODE:" + ERRCODE + "| length:" + arg.Length + ""); +#endif if (err > ErrorCode.ErrorOk) return; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetworkHelper.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetworkHelper.cs index 6c60c36f..6248654a 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetworkHelper.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetworkHelper.cs @@ -1,6 +1,8 @@ using AxibugEmuOnline.Client.ClientCore; +using AxibugEmuOnline.Client.Common; using AxibugEmuOnline.Client.Event; using AxibugProtobuf; +using Google.Protobuf; using HaoYueNet.ClientNetwork; using System; using System.Net.Sockets; @@ -88,7 +90,6 @@ namespace AxibugEmuOnline.Client.Network /// 业务数据 void GetDataCallBack(int CMDID, int ERRCODE, byte[] data) { - //NetworkDeBugLog("收到消息 CMDID =>" + CMDID + " ERRCODE =>" + ERRCODE + " 数据长度=>" + data.Length); try { //抛出网络数据 @@ -164,5 +165,37 @@ namespace AxibugEmuOnline.Client.Network return false; return socket.Connected; } + + public void SendToServer(int CmdID, IMessage msg) + { + + //SendToServer(CmdID, ProtoBufHelper.Serizlize(msg)); + //return; + + // byte[] data2 = ProtoBufHelper.Serizlize(msg); + // base.SendToServerWithLength(CmdID, ref data2, data2.Length); + //#if UNITY_EDITOR + // if (CmdID > (int)CommandID.CmdPong) + // NetworkDeBugLog("[NET]" + CmdID + "|" + (CommandID)CmdID + "| alllen:" + data2.Length + " usedlength:" + data2 + ""); + //#endif + // return; + + ProtoBufHelper.RentSerizlizeData(msg, out byte[] data, out int usedlength); + base.SendToServerWithLength(CmdID, ref data, usedlength); +#if UNITY_EDITOR + //if (CmdID > (int)CommandID.CmdPong) + //NetworkDeBugLog("[NET]" + CmdID + "|" + (CommandID)CmdID + "| alllen:"+ data.Length + " usedlength:" + usedlength + ""); +#endif + ProtoBufHelper.ReturnSerizlizeData(data); + } + + public new void SendToServer(int CmdID, byte[] data) + { +#if UNITY_EDITOR + //if(CmdID > (int)CommandID.CmdPong) + //NetworkDeBugLog("[NET]" + CmdID + "|" + (CommandID)CmdID + "| length:" + data.Length + ""); +#endif + base.SendToServer(CmdID, data); + } } }