Debug.Log("123");
这是C#开发中常用的调试语句,但是频繁的调用是会照成GC Alloc的,然后在真机会调用unityLogger.logEnabled或
unityLogger.filterLogType对其进行开关,但是这种并不能阻止传
入参数本身造成的GC Alloc,如
Debug.Log(123);
...
Debug.Log(string.Format("12{0}", 3));
类似这样的装箱和字符串操作都会产生GC Alloc,这里可以使用如
下方法:
#if UNITY_EDITOR
Debug.Log(123);
#endif
...
#if UNITY_EDITOR
Debug.Log(string.Format("12{0}", 3));
#endif
该方法可以避免在真机上生成代码,可是需要用#if和#endif扩住的
地方太多了,代码可读性会降低,这时可以用一个[Conditional]来
完成这样的操作,如下面方法:
[Conditional("UNITY_EDITOR")]
public static void Print(object message)
{
Debug.Log(message);
}
这样在真机上就不会出现代码,也就不会发生GC Alloc了,同时也维护了代码的可读性。