我们在开发中,往往会觉得unity自带的日志系统不是那么好用,比如,不能筛选日志,不能打印在屏幕上,想生成自己的日志文件,等等等等的需求,这时候就需要自己来扩展编辑器的相关功能了。我这里实现的需求比较简单,就是给日志加了个key,可以根据这个key来对暂时不需要显示的日志进行过滤,还有就是将我们的日志打印到屏幕上去。
打印屏幕的类参考了由 Jeremy Hollingsworth 和 Simon Waite 这2人写的一个 DebugConsole.cs 类,不过他们2个的版本实在是太早了,而且还有错误和啰嗦的地方,有兴趣的话你可以去搜来看看。外加老外真的很喜欢用while循环呀,好多能用for的地方也是while,是因为这样写字比较少吗?看来大家都是懒癌晚期患者,(:зゝ∠)
一直犯懒,终于把它给写了。。。有时间我也给它扔到 github 上去。。。
外加如果想要输出日志文件,或者其它什么功能的,你就自己加就好了,我当前的需求还是挺简单的~
效果如图:
这样用
或者这样用
一共由2个类组成,一个负责控制台打印,一个负责屏幕打印喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace GameFramework
{
///
/// 日志管理器
///
public class DebugMgr
{
#region 日志结构
///
/// 日志基类
///
protected abstract class LogDataBase
{
///
/// key
///
public string key;
///
/// 日志
///
public string log;
///
/// 构造
///
///key
///日志
public LogDataBase(string _key, string _log)
{
key = _key;
log = _log;
}
///
/// 获取log
///
///格式
/// log
protected string GetLog(string format)
{
string txt = string.Format(format, key, log);
return txt;
}
///
/// 打印
///
///格式
/// 日志
public abstract string Print(string format);
}
///
/// 日志类
///
protected class LogData : LogDataBase
{
public LogData(string key, string message)
: base(key, message)
{ }
public override string Print(string format)
{
string logTxt = base.GetLog(format);
Debug.Log(logTxt);
return logTxt;
}
}
///
/// 警告类
///
protected class LogWarningData : LogDataBase
{
public LogWarningData(string key, string message)
: base(key, message)
{ }
public override string Prin