Unity中打开或关闭所有debug输出
在制作项目的过程中经常需要debug 输出一些数据以供测试或者调试bug,在调试完成后想要一一取消或者删除这些debug输出是比较麻烦的,unity的API中提供了一个语句来屏蔽所有的debug输出。
Debug.logger.logEnabled = false;
当 logEnabled 设置为false后,在该语句之后所有的Log输出都会被屏蔽掉,可以禁用其他脚本中的输出语句,跳转场景后依然起作用;
接下来是测试阶段:
1、测试是否在同一个脚本中是否可以屏蔽debug输出
void Start () {
Debug.Log("Hello "+SceneManager.GetActiveScene().name);
Debug.LogError("我报错了! " + SceneManager.GetActiveScene().name);
Debug.logger.logEnabled = false;
Debug.Log("world " + SceneManager.GetActiveScene().name);
Debug.LogError("出错了 " + SceneManager.GetActiveScene().name);
}
输出结果显示,当 logEnabled 设置为false后,之后的debug被屏蔽了。
2、跨脚本,调用其他脚本方法及并行执行时的情况;
脚本1:
public DebugTest2 _debugTest2Scripts;
// Use this for initialization
void Start () {
Debug.Log("Hello "+SceneManager.GetActiveScene().name);
Debug.LogError("我报错了! " + SceneManager.GetActiveScene().name);
Debug.logger.logEnabled = false;
_debugTest2Scripts.Init(); //调用其他脚本
Debug.Log("world " + SceneManager.GetActiveScene().name);
Debug.LogError("出错了 " + SceneManager.GetActiveScene().name);
}
脚本2:
int i = 0;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if(i==0)
{
Debug.Log("请再等一世吧!" + SceneManager.GetActiveScene().name);
i++;
}
}
public void Init()
{
Debug.Log("痴情的妖怪啊!" + SceneManager.GetActiveScene().name);
}
当 logEnabled 设置为true时,运行结果显示:
当 logEnabled 设置为false时,运行结果显示:
3、跳转场景后的情况
新建一个场景,创建脚本文件,在Start方法中输出两句话;
void Start () {
Debug.Log("追风的少年 " + SceneManager.GetActiveScene().name);
Debug.LogError("哎呦,我报错! " + SceneManager.GetActiveScene().name);
}
当 logEnabled 设置为true时,运行结果显示:
当 logEnabled 设置为false时,运行结果显示:
总结:通过测试可以得知,当 logEnabled 设置为false时,所有类型的debug输出将会屏蔽,但不会影响程序中其他报错输出。