日志"/>
保存Unity中的Log日志
代码中的debug日志保存本地
using System.Collections;
using UnityEngine;
using System.IO;public class SaveLog : MonoBehaviour
{private float length;Queue queue;private void Awake(){DontDestroyOnLoad(this);LogToFile("Version of the runtime: " + Application.unityVersion, true, false);Application.logMessageReceivedThreaded += OnReceiveLogMsg;queue = new Queue();}// Start is called before the first frame updatevoid OnReceiveLogMsg(string condition, string stackTrace, LogType type) {string _type = "";switch (type){case LogType.Error:_type = "error";break;case LogType.Assert:_type = "Assert";break;case LogType.Warning:_type = "Warning";break;case LogType.Log:_type = "Log";break;case LogType.Exception:_type = "Exception";break;default:break;}string msg = "[MSG]:" + condition + "--" + "[station]:" + stackTrace + "-" + "[LogType]:" + _type;queue.Enqueue(msg);}// Update is called once per framevoid Update(){CheckLogs();}void CheckLogs() {if (queue.Count != 0) {LogToFile(queue.Peek().ToString(), true, true,()=> { queue.Dequeue(); }); }}public void LogToFile(string str, bool bwithTime, bool bAppendLineFeed,System.Action callback = null) {if (str == null) return;try{
#if UNITY_EDITORstring fname = Application.dataPath + "/Unitylog.txt";
#elsestring fname = Application.persistentDataPath+ "/Unitylog.txt";
#endifif (fname == "" || fname == null) return;StreamWriter writer = new StreamWriter(fname, true, System.Text.Encoding.Default);if (bwithTime) writer.WriteLine("\r\n\r\n---------" + System.DateTime.Now.ToString());if (bAppendLineFeed) writer.WriteLine(str);else writer.Write(str);writer.Close();callback?.Invoke();}catch{throw;}}
}
结果:
更多推荐
保存Unity中的Log日志
发布评论