using System.Collections.Generic; using UnityEngine; using UI.Common; using System; namespace GFGGame { public class LogController : SingletonBase { public const string _all = "All"; public const string _error = "Error"; public const string _log = "Log"; public const int _maxCount = 100; public Dictionary> msgDic = new Dictionary>(); // private UI_BtnLog _btnLog; public void Init() { msgDic.Add(_all, new List()); msgDic.Add(_error, new List()); msgDic.Add(_log, new List()); if (LauncherConfig.onDebug >= 0) { this.CreatBtnLog(); } this.AddMsgListener(); } public void AddMsgListener() { Application.logMessageReceived += (condition, stackTrace, type) => { if (type == LogType.Error || type == LogType.Exception || type == LogType.Log) { this.AddMsgToDic(condition, stackTrace, type); } }; } private void AddMsgToDic(string condition, string stackTrace, LogType type) { string msg = ""; DateTime now = DateTime.Now; string time = string.Format("[{0}.{1} {2}:{3}:{4}]", now.Month, now.Day, now.Hour, now.Minute, now.Second); switch (type) { case LogType.Error: case LogType.Exception: if (msgDic[_all].Count == _maxCount) { msgDic[_all].RemoveAt(0); } if (msgDic[_error].Count == _maxCount) { msgDic[_error].RemoveAt(0); } msg = string.Format("error@{2}\n{0}\n{1}", condition, stackTrace, time); msgDic[_all].Add(msg); msgDic[_error].Add(msg); // if (_btnLog != null) // { // _btnLog.m_c1.selectedIndex = 1; // _btnLog.target.alpha = 1; // } if (LauncherConfig.onDebug >= 0) { ViewManager.Show(ViewName.LOG_VIEW); } break; default: if (LauncherConfig.onDebug >= 0) { if (msgDic[_all].Count == _maxCount) { msgDic[_all].RemoveAt(0); } if (msgDic[_log].Count == _maxCount) { msgDic[_log].RemoveAt(0); } msg = string.Format("log@{2}\n{0}\n{1}", condition, stackTrace, time); msgDic[_all].Add(msg); msgDic[_log].Add(msg); } break; } } private void CreatBtnLog() { // if (_btnLog == null) // { // _btnLog = UI_BtnLog.Create(); // ViewManager.AddChildToDebugLayer(_btnLog.target); // this.SetBtnLogVisable(false); // _btnLog.target.x = 50; // _btnLog.target.y = 1880; // _btnLog.target.onClick.Add(this.OnBtnLogClick); // } } private void OnBtnLogClick() { ViewManager.Show(ViewName.LOG_VIEW); // _btnLog.m_c1.selectedIndex = 0; // _btnLog.target.alpha = 0; } public void SetBtnLogVisable(bool visable) { // _btnLog.target.visible = visable; } } }