一直想写一个简单的控制Log的类,但是Debug.Log又用习惯了,实在不想换,而且一些项目已经做完了也不想改里面的代码。
就算可以全局搜索替换,我也不大愿意,于是就想扩展一下原来的Debug,主要用于正式环境屏蔽所有的log(好像Unity里有个选项钩上导出的包就不会log,想直接用的自己搜搜吧),这不自己写了一个,在宏定义里写个判断条件,Editor下才输出log,如果有其他需要可以自己加哈,懒人直接用ture和false在上线前切换一下也行:
using System;
public class Debug : UnityEngine.Debug
{
#if UNITY_EDITOR //&& false
public static new Action<object> Log = UnityEngine.Debug.Log;
public static new Action<object> LogError = UnityEngine.Debug.LogError;
#else
public static void Log(string str) { }
public static void LogError(string str) { }
#endif
}
直接继承UnityEngine.Debug,然后如果是编辑器下指定Log委托直接调用UnityEngine.Debug.Log,LogError也一样,LogWarning有点问题,实在是懒得改(毕竟我也不用啊)。
这样用法还和原来的一样,原来项目里的Debug.Log也都直接不用改了,还能在上线前屏蔽所有的log,完美。
蠢了蠢了,都继承了UnityEngine.Debug,上面两行都应该不要,应该直接这样:
public class Debug : UnityEngine.Debug
{
#if false
public static void Log(string str) { }
#endif
}
上线的时候把false改成ture就行~
作者分享了一种方法,如何在Unity中创建一个简单的Debug类扩展,通过宏定义区分编辑器环境和线上环境,实现在正式发布时屏蔽所有Log。无需修改既有代码,仅需在上线前调整一个开关。
7663

被折叠的 条评论
为什么被折叠?



