| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using LitJson; | 
| using System.IO; | 
| using UnityEngine.UI; | 
|   | 
|   | 
| public class DebugUtility : Singleton<DebugUtility> | 
| { | 
|   | 
|     GameObject debugRoot; | 
|   | 
|     bool m_DebugAccount = false; | 
|     public bool debugAccount    // 是否开启debug模式 | 
|     { | 
|         get { return m_DebugAccount; } | 
|         private set | 
|         { | 
|             if (m_DebugAccount != value) | 
|             { | 
|                 m_DebugAccount = value; | 
|                 // if (m_DebugAccount) | 
|                 // { | 
|                 //     RunTimeExceptionUtility.Instance.Init(); | 
|                 // } | 
|             } | 
|         } | 
|     } | 
|   | 
|     public int debugBranch = -1; | 
|     //服务端设置白名单:1.可打开debug模式 2. 可提前登录维护服;缺点需要运维人员配合但安全 | 
|     //其他参考: 客户端自己设置的debug模式,增加debug文件;缺点:ios无法操作 | 
|     //          聊天设置分支同时会开启debug模式,优点:任何情况下可以独立操作,不安全但无实质性影响 | 
|     public bool isWhiteListAccount { get; set; } | 
|   | 
|   | 
|     public void Init() | 
|     { | 
|         isWhiteListAccount = false; | 
|         if (VersionConfig.Get().debugVersion) | 
|         { | 
|             debugAccount = true; | 
|         } | 
|         else | 
|         { | 
|             var parentDirectory = Directory.GetParent(Application.persistentDataPath); | 
|             debugAccount = File.Exists(parentDirectory + "/Debug"); | 
|         } | 
|   | 
|         if (LocalSave.GetString("#@#BrancH") != string.Empty) | 
|         { | 
|             var branch = LocalSave.GetString("#@#BrancH"); | 
|             int tmpbranch; | 
|             int.TryParse(LocalSave.GetString("#@#BrancH").Substring(1), out tmpbranch); | 
|             if (branch.StartsWith("d") && tmpbranch != 0) | 
|             { | 
|                 debugBranch = tmpbranch; | 
|                 debugAccount = true; | 
|             } | 
|             else if (branch.StartsWith("r") && tmpbranch != 0) | 
|             { | 
|                 debugBranch = tmpbranch; | 
|                 debugAccount = false; | 
|             } | 
|         } | 
|   | 
|         if (debugAccount) | 
|         { | 
|             if (Application.isMobilePlatform) | 
|             { | 
|                 var parentDirectory = Directory.GetParent(Application.persistentDataPath); | 
|                 if (File.Exists(parentDirectory + "/Debug")) | 
|                 { | 
|                     var content = File.ReadAllText(parentDirectory + "/Debug"); | 
|                     if (!string.IsNullOrEmpty(content)) | 
|                     { | 
|                         var json = JsonMapper.ToObject<DebugBranch>(File.ReadAllText(parentDirectory + "/Debug")); | 
|                         debugBranch = json.branch; | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|   | 
|   | 
|     } | 
|   | 
|   | 
|     public void CreateDebugRoot() | 
|     { | 
|         if (debugRoot == null) | 
|         { | 
|             var prefab = BuiltInLoader.LoadPrefab("UIRootDebug"); | 
|             debugRoot = GameObject.Instantiate(prefab); | 
|             MonoBehaviour.DontDestroyOnLoad(debugRoot); | 
|             debugRoot.name = "UIRootDebug"; | 
|         } | 
|     } | 
|   | 
|   | 
|     public class DebugBranch | 
|     { | 
|         public int branch = -1; | 
|     } | 
|   | 
| } |