using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using System.Text; using System.IO; public class NetPkgCtl { private static List packages = new List(); //发送接收封包存储列表 private static List tempPackages = new List();//暂停时缓存的封包列表 public static bool stopRecieve = false; public static void RecordPackage(ServerType socketType, string bytes, NetPackagetType packType, string packageName, string fields, List fieldDetails) { #if UNITY_EDITOR var package = new NetPackage(); package.socketType = socketType; package.time = DateTime.Now.ToString("HH:mm:ss:fff"); package.type = packType; if (string.IsNullOrEmpty(packageName)) { package.content = bytes.Replace(",", " "); var byteStr = package.content.Split(' '); if (byteStr.Length > 1) { package.name = StringUtility.Contact("H", byteStr[0], byteStr[1], "(未注册)"); } } else { package.content = bytes.Replace(",", " "); package.name = packageName; package.fields = fields; package.fieldDetails = fieldDetails; } if (!stopRecieve) { packages.Add(package); } else { tempPackages.Add(package); } #endif } public static List GetPackages() { return packages; } public static List GetTempPackages() { return tempPackages; } public static void WriteAllNetLog(bool @details) { if (packages != null) { var count = 0; var lines = new List(); for (int i = packages.Count - 1; i >= 0; i--) { if (count > 20000) { break; } var package = packages[i]; var line = string.Empty; line = StringUtility.Contact(package.type == NetPackagetType.Client ? "【发送】\t" : "【接收】\t", package.time, ":", package.name, @details ? "\r\n" : "-->" + package.fields); if (@details && package.fieldDetails != null) { for (int j = 0; j < package.fieldDetails.Count; j++) { line = StringUtility.Contact(line, "\t\t\t", package.fieldDetails[j], "\r\n"); } } lines.Add(line); count++; } File.WriteAllLines(Application.dataPath + "/PackageLogs_" + (@details ? "details" : "abstract") + "_" + DateTime.Now.ToString("HH_mm_ss") + ".txt", lines.ToArray()); } } } public class NetPackage { public ServerType socketType; public bool show = false; public string time; public string serverTime; public string content; public string name; public NetPackagetType type; public string fields; public List fieldDetails; } public enum NetPackagetType { Client = 1, Server = 2, All = 3, }