Unity Debug.Log 性能分析

介绍

Debug.Log , 主要是因为发现有些同学,对这个并不是很在意,可能以为只是打印到Unity控制台。当你发Release版本的时候,Unity并不会自动帮你禁用Debug.Log,Debug.Log会产生GC,非常影响性能(开启Unity Deep Profiler可以查看性能分析)。

Unity5.3提供手动关闭Debug功能

if (Debug.isDebugBuild) {
	Debug.logger.logEnabled = true;
	//Debug.logger.filterLogType = LogType.Log; //显示所有
} else {
	Debug.logger.logEnabled = false;
	//Debug.logger.filterLogType = LogType.Error;//只显示Error + Exception
}

(这样虽然关闭Log输出, 但是需要开发者主动避免会产生GC的参数传递)
例如 Debug.Log(“Hello”+“World”);

Conditional

采用条件编译标签Conditional封装一层自己的Log输出,来直接避免掉Log输出的编译,还可以省去Log函数参数传递和调用的开销。

public static class DebugEx {
	 //需要在Unity PlayerSettings -> Scripting Define Symbol 添加VERBOSE
	 //Release发布时去掉VERBOSE,所有的DebugEx.Log函数调用将不会参与编译。
	 //这是简单的实现方式 , 后期功能的扩展以及Debug和Release自动切换机制,可以开发者进行封装。
     [Conditional("VERBOSE")] 
     public static void Log(object message, UnityEngine.Object obj = null) {
         UnityEngine.Debug.Log(message, obj);
     }
 
     public static void LogWarning(object message, UnityEngine.Object obj = null) {
         UnityEngine.Debug.LogWarning(message, obj);
     }
 
     public static void LogError(object message, UnityEngine.Object obj = null) {
         UnityEngine.Debug.LogError(message, obj);
     }
 }

Plugins

Log Viewer 非常好的Log免费插件 5星推荐!
Unity Assets Store下载地址

你可能感兴趣的:(Unity,Unity,游戏开发,Unity,游戏开发,Debug.Log)