Debug.Log会导致Unity构建中的延迟吗?

时间:2017-03-16 15:12:17

标签: c# debugging unity3d unity5

我的同事说剩下的Debug.Log导致延迟。 但我认为这有助于加强和加速我们的发展。 此外,我发现有一个选项可以禁用生产环境中的Debug.Log

给我你的意见。

2 个答案:

答案 0 :(得分:6)

当调用Debug.Log()时,它会影响性能,因为它会执行一些堆栈跟踪解析,然后将一些内容写入文件。

它必须深入到堆栈跟踪中,所以如果你有很多Debug.Log s,那么你可能会在构建中看到性能损失。

您可能希望通过在调试版本中调用Debug.Log语句来避免这种情况。来自Unity Docs

  

在Build Settings对话框中有一个名为" Development的复选框   建立"

所以你可以这样做,只有在选中该框时才会调用:

if (Debug.isDebugBuild) {
     Debug.Log ("If you can see this, you are in Debug Mode");
}

更简单的选择是转到播放器设置并取消选中"使用播放器日志": enter image description here

这将停止正在写入的日志文件。

答案 1 :(得分:4)

如果每帧都有几个日志,那么肯定会降低你的性能。但是智能地使用它只会为你的代码内容提供非常重要的反馈。它还有助于检测,例如,无法处理某些Web服务或您无法预测的任何内容。我的建议是使用日志记录,但要聪明一点

我建议您编写自己的记录器类。然后,您可以禁用/启用特定类型/方案/环境/任何内容的日志记录。另外,我更喜欢在乞讨时添加日志的位置,例如[ClassName.MethodName()] LOG-MESSAGE 创建自己的记录器类将为您带来许多好处,同时它不会花费您太多时间。我亲自为自己制作了自定义记录器类,可以禁用特定类型的日志(因此您可以在需要时打开/关闭调试而无需更改代码,只需一个标志)并格式化日志消息,使其看起来更好。无论如何它最终使用Debug.Log。它被编译为分离的程序集,因此如果您单击Unity控制台中的日志,它仍会将您重定向到触发日志的代码行。如果您不能将其编译到程序集,它会将您重定向到触发Debug.Log的自定义记录器方法。

这只是我使用自定义记录器的建议,但我强烈建议您使用记录。 当用户完成有趣的事情时触发的几个日志确实会对您的应用产生影响。