Console.WriteLine vs Print

时间:2018-02-05 21:16:32

标签: c# unity3d

我知道这可能听起来像一个非常愚蠢的问题,但我很困惑,只能找到问题'WriteLine vs debug.log'而不是这个问题的答案。我最初开始使用Visual Studio,在那里我学会了使用Console.WriteLine(“example text”);在屏幕上显示一个句子,但是我已经开始使用Unity,并且我在那里使用简单的打印(“示例文本”);

请问我应该使用哪一个?他们都做同样的事情,就像'int'和'decimal'之间的差异有时并不总是显而易见的那样?或者我这样使用它们取决于我使用的程序?如果是后者,如果我必须根据我使用的程序改变我使用它的方式,这是否会破坏它作为一种语言的目的。

道歉,如果这看起来像是一个无关紧要的问题,但我宁愿确定而不是继续解雇它,并因此而进一步做错事。

1 个答案:

答案 0 :(得分:2)

对于Unity代码,我建议使用Debug类中的静态方法,例如Debug.LogDebug.LogFormat等。

这些方法还有其他变体,例如Debug.LogWarningDebug.LogError,您可以在上面的第一个链接中找到这些变体。在编辑器中,您可以使用日志面板上方的按钮过滤日志,仅显示所需的消息,例如,只有在其他日志消息中存在太多噪音时才会出现错误。

Unity的MonoBehaviour.print方法是Debug.Log的一个薄包装器,它有两个缺点:

  • 它缺少上述方法的一些功能,例如能够传递将调试消息绑定到Unity编辑器中的对象的context参数,以及能够按日志类型过滤编辑器。
  • 这是MonoBehaviour的一种方法,因此您只能 在从中派生的类中使用它。 Debug方法可用于任何Unity代码。

值得注意的是,所有这些日志方法都可以在运行时构建和编辑器中使用。在构建中调用它们时,MyAppName_Data/output_log.txt文件中会显示日志消息,其中MyAppName是可执行文件的名称。

在进行运行时构建时,请注意不要在代码中留下太多的日志记录调用,尤其是在像Update方法这样的每个帧中调用的方法中。您可以使用Application.isEditor来测试您是否在编辑器中运行。

也可以使用platform dependent compilation。这在运行时节省了一些空间,但它更棘手。例如,您可能认为UNITY_EDITOR表示您在编辑器中运行,但它也在运行时构建中定义!