using System.Collections.Generic; using UnityEngine; 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>(); public void Init() { msgDic.Add(_all, new List()); msgDic.Add(_error, new List()); msgDic.Add(_log, new List()); this.AddMsgListener(); } public void AddMsgListener() { Application.logMessageReceived += (condition, stackTrace, type) => { if (LauncherConfig.onDebug < 2) { return; } 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 !UNITY_EDITOR ViewManager.Show(ViewName.LOG_VIEW); #endif break; default: 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; } } } }