| using System.Collections;  | 
| using System.Collections.Generic;  | 
| using UnityEngine;  | 
| using System;  | 
| using System.Text;  | 
| using System.IO;  | 
|   | 
| public class NetPkgCtl  | 
| {  | 
|     private static List<NetPackage> packages = new List<NetPackage>(); //发送接收封包存储列表  | 
|     private static List<NetPackage> tempPackages = new List<NetPackage>();//暂停时缓存的封包列表  | 
|     public static bool stopRecieve = false;  | 
|   | 
|     public static void RecordPackage(ServerType socketType, string bytes, NetPackagetType packType, string packageName, string fields, List<string> 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<NetPackage> GetPackages()  | 
|     {  | 
|         return packages;  | 
|     }  | 
|   | 
|     public static List<NetPackage> GetTempPackages()  | 
|     {  | 
|         return tempPackages;  | 
|     }  | 
|   | 
|     public static void WriteAllNetLog(bool @details)  | 
|     {  | 
|         if (packages != null)  | 
|         {  | 
|             var count = 0;  | 
|             var lines = new List<string>();  | 
|             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<string> fieldDetails;  | 
| }  | 
|   | 
| public enum NetPackagetType  | 
| {  | 
|     Client = 1,  | 
|     Server = 2,  | 
|     All = 3,  | 
| }  | 
|   |