using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class StageLoadTimeOutCatcher : MonoBehaviour { public static ProtocolRecorder got0102Time; public static ProtocolRecorder gotA126Time; public static ProtocolRecorder gotA127Time; public static ProtocolRecorder got0109Time; public static ProtocolRecorder got0403Time; public static ProtocolRecorder send0107Time; static StageLoadTimeOutCatcher timeOutCatcher; public int stageId = 0; public DateTime startTime; private void Awake() { startTime = DateTime.Now; } public static void Begin(int stageId) { if (timeOutCatcher != null) { DestroyImmediate(timeOutCatcher.gameObject); timeOutCatcher = null; } var go = new GameObject("StageLoadTimeOutCatcher"); var catcher = go.AddMissingComponent(); catcher.stageId = stageId; timeOutCatcher = catcher; DontDestroyOnLoad(go); } public static void Stop() { if (timeOutCatcher != null) { DestroyImmediate(timeOutCatcher.gameObject); timeOutCatcher = null; } } public static void ReportLoadingOverTime() { if (timeOutCatcher != null) { DestroyImmediate(timeOutCatcher.gameObject); timeOutCatcher = null; } } public static void RecordProtocol(ServerType socketType, string number, DateTime time) { var recorder = new ProtocolRecorder(number, time, socketType); switch (number) { case "0102": got0102Time = recorder; break; case "A126": gotA126Time = recorder; break; case "A127": gotA127Time = recorder; break; case "0109": got0109Time = recorder; break; case "0107": send0107Time = recorder; break; case "0403": got0403Time = recorder; break; default: break; } } public struct ProtocolRecorder { public string number; public DateTime time; public ServerType socketType; public ProtocolRecorder(string number, DateTime time, ServerType socketType) { this.number = number; this.time = time; this.socketType = socketType; } public override string ToString() { return StringUtility.Contact("封包:", number, ";", "时间:", time.ToString("HH:mm:ss"), ";", "服务器:", socketType); } } }