91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity實現簡易日志輸出功能

發布時間:2020-09-16 00:02:46 來源:腳本之家 閱讀:313 作者:Blinkedu 欄目:編程語言

在使用Unity中的Debug.Log()進行日志輸出時很不方便,在打包出來的可執行文件中沒有辦法看到輸出,所有就想自己實現一個簡易的日志輸出功能,可以輸出到日志文件,因為能力實在是不夠,所以有錯誤和不合理的地方,還請各位老師指點一下,謝謝啦

1.日志記錄器接口

public interface ILogger
{
 void Log(string condition, string stackTrace, UnityEngine.LogType type);
}

2.日志文件記錄器

using System;
using UnityEngine;
using System.IO;
 
public class FileLogger : ILogger
{
 private readonly string path;
 
 /// <summary>
 /// 構造方法
 /// </summary>
 /// <param name="isClear">是否清空原有的日志</param>
 public FileLogger(bool isClear = false)
 {
  switch (Application.platform)
  {
   case RuntimePlatform.Android:
    path = Path.Combine( Application.persistentDataPath,"log.txt");
    break;
   case RuntimePlatform.WindowsPlayer:
    path = Path.Combine(Application.dataPath, "log.txt");
    break;
   case RuntimePlatform.WindowsEditor:
    path = Path.Combine(Application.dataPath, "log.txt");
    break;
   case RuntimePlatform.IPhonePlayer:
    path = Path.Combine(Application.persistentDataPath, "log.txt");
    break;
   case RuntimePlatform.OSXEditor:
    break;
   default:
    break;
  }
 
  if (isClear)
  {
   if (File.Exists(path))
   {
    File.Delete(path);
   }
  }
 }
 
 public void Log(string condition, string stackTrace, LogType type)
 {
  using (StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.UTF8))
  {
   string msg = string.Format("[{0}] {1}: {2}\n{3}", GetNowTime(), type, condition, stackTrace);
   sw.WriteLine(msg);
  }
 }
 
 
 #region Tool Method
 private string GetNowTime()
 {
  return DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
 }
 #endregion
}

3.日志系統管理類 

using System;
using UnityEngine;
 
public class LogSys
{
 private static ILogger logger;
 public static ILogger Logger
 {
  get { return logger; }
 }
 
 public bool IsOpen
 {
  get { return Debug.unityLogger.logEnabled; }
 }
 
 private LogSys() { }
 
 /// <summary>
 /// 初始化
 /// </summary>
 /// <param name="_logger">日志輸出器</param>
 /// <param name="isOpen">是否開啟日志輸出</param>
 public static void Init(ILogger _logger, bool isOpen = true)
 {
  Init(isOpen);
  logger = _logger;
  Enable();
 }
 
 public static void Init(bool isOpen = true)
 {
  Debug.unityLogger.logEnabled = isOpen;
 }
 
 /// <summary>
 /// 過濾器
 /// </summary>
 /// <param name="logType">需要顯示的日志類型</param>
 public static void Filter(LogType logType = LogType.Log)
 {
  Debug.unityLogger.filterLogType = logType;
 }
 
 public static void Enable()
 {
  if (logger != null)
  {
   Application.logMessageReceived += logger.Log;
  }
 }
 
 public static void Disable()
 {
  if (logger != null)
  {
   Application.logMessageReceived -= logger.Log;
  }
 
 }
}

4.測試 

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
 
public class Test : MonoBehaviour
{
 public Text logText;
 
 void Awake()
 {
  LogSys.Init(new FileLogger());
 }
 
 void Update()
 {
  if (Input.GetKeyDown(KeyCode.Q))
  {
   Debug.Log("My name is Blinkedu.");
  }
 
  if (Input.GetKeyDown(KeyCode.W))
  {
   Debug.LogWarning("My name is Blinkedu.");
  }
 
  if (Input.GetKeyDown(KeyCode.E))
  {
   Debug.LogError("My name is Blinkedu.");
  }
 }
 
 private void OnDestroy()
 {
  LogSys.Disable();
 }
}

Unity實現簡易日志輸出功能

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘乡市| 徐汇区| 和平县| 娱乐| 西吉县| 无为县| 永清县| 江山市| 淮滨县| 巴南区| 柳江县| 上虞市| 兴山县| 孝义市| 谢通门县| 广宁县| 康乐县| 陇川县| 莒南县| 武乡县| 宜昌市| 庆城县| 凯里市| 泰宁县| 金坛市| 朝阳市| 汾阳市| 洪洞县| 都兰县| 乌海市| 江孜县| 奉化市| 吉木萨尔县| 昌图县| 耿马| 新安县| 库车县| 浠水县| 乌兰察布市| 木里| 育儿|