--[[ 单个场景的网络协议统计 需要的时候添加接口调用 ]] local NetStatisticsByScene = {} local private = {} private.curStatisticsSceneId = nil private.SceneNetMsgData = { SendTotal = 0, ReceiveTotal = 0, SendMsgDatas = {}, ReceiveMsgDatas = {}, } function NetStatisticsByScene.OnNetConnectedTick() local curGameSceneId = LevelManager.GetCurLevelID() if curGameSceneId > 0 then if not private.curStatisticsSceneId then private.curStatisticsSceneId = curGameSceneId end if private.curStatisticsSceneId ~= curGameSceneId then --保存上一个场景的协议统计结果 private.SaveCurSceneStatisticsData() private.curStatisticsSceneId = curGameSceneId end end end function private.SaveCurSceneStatisticsData() local saveStr = string.format("SceneId:%s\n", private.curStatisticsSceneId) saveStr = saveStr .. string.format("SendTotal:%s\n", private.SceneNetMsgData.SendTotal) saveStr = saveStr .. string.format("ReceiveTotal:%s\n", private.SceneNetMsgData.ReceiveTotal) saveStr = saveStr .. "发送协议统计:\n" for msgId, msgStatisticsData in pairs(private.SceneNetMsgData.SendMsgDatas) do saveStr = saveStr .. string.format("\tMsgID:%s, Count:%s, TotalSize:%s\n", msgId, msgStatisticsData.Count, msgStatisticsData.TotalSize) end saveStr = saveStr .. "收到协议统计:\n" for msgId, msgStatisticsData in pairs(private.SceneNetMsgData.ReceiveMsgDatas) do saveStr = saveStr .. string.format("\tMsgID:%s, Count:%s, TotalSize:%s\n", msgId, msgStatisticsData.Count, msgStatisticsData.TotalSize) end local curDate = UTL.Time.OsDateOriginal("*t", os.time()) LuaExt.FileWriteText(string.format("Logs/%s_%s-%s-%s-%s.txt", private.curStatisticsSceneId, curDate.day, curDate.hour, curDate.min, curDate.sec), saveStr) private.SceneNetMsgData.SendTotal = 0 private.SceneNetMsgData.ReceiveTotal = 0 private.SceneNetMsgData.SendMsgDatas = {} private.SceneNetMsgData.ReceiveMsgDatas = {} end function NetStatisticsByScene.AddOneSendMsg(msgId, msgLength) private.SceneNetMsgData.SendTotal = private.SceneNetMsgData.SendTotal+msgLength if not private.SceneNetMsgData.SendMsgDatas[msgId] then private.SceneNetMsgData.SendMsgDatas[msgId] = {} private.SceneNetMsgData.SendMsgDatas[msgId].Count = 0 private.SceneNetMsgData.SendMsgDatas[msgId].TotalSize = 0 end private.SceneNetMsgData.SendMsgDatas[msgId].Count = private.SceneNetMsgData.SendMsgDatas[msgId].Count+1 private.SceneNetMsgData.SendMsgDatas[msgId].TotalSize = private.SceneNetMsgData.SendMsgDatas[msgId].TotalSize+msgLength end function NetStatisticsByScene.AddOneReceiveMsg(msgId, msgLength) private.SceneNetMsgData.ReceiveTotal = private.SceneNetMsgData.ReceiveTotal+msgLength if not private.SceneNetMsgData.ReceiveMsgDatas[msgId] then private.SceneNetMsgData.ReceiveMsgDatas[msgId] = {} private.SceneNetMsgData.ReceiveMsgDatas[msgId].Count = 0 private.SceneNetMsgData.ReceiveMsgDatas[msgId].TotalSize = 0 end private.SceneNetMsgData.ReceiveMsgDatas[msgId].Count = private.SceneNetMsgData.ReceiveMsgDatas[msgId].Count+1 private.SceneNetMsgData.ReceiveMsgDatas[msgId].TotalSize = private.SceneNetMsgData.ReceiveMsgDatas[msgId].TotalSize+msgLength end return NetStatisticsByScene