混合UnityEngine.Debug和System.Diagnostics.Debug

时间:2019-01-28 22:11:15

标签: c# unity3d visual-studio-2017

我将Visual Studio调试器附加到Unity3D以调试我的代码。

我都想

  • 将日志消息输出到Unity Console
  • ,以及在发生异常的情况下中断Visual Studio。例如这样的...

    Shader nLaserShader = Shader.Find(“ Particles / Additive”); 如果(nLaserShader == null) {  UnityEngine.Debug.Log(“没有激光着色器!\ n”);  System.Diagnostics.Debugger.Break(); }

我必须使用UnityEngine名称空间,否则VS不会编译我的代码,并说Debug.Log不明确。

是否有避免输入完整名称空间的方法?

1 个答案:

答案 0 :(得分:0)

AFAIK避免每次需要对模棱两可的事物进行调用时都不必键入整个名称空间的唯一方法是在名称空间中添加别名。您仍然需要键入 something ,但是至少可以将其缩短为任意长度。语法很简单。

using diag = System.Diagnostics;

将允许您通过简单地键入System.Diagnostics.Debugger.Break()来呼叫diag.Debbuger.Break();,同时能够像平常一样呼叫Debug.Log()

using UnityEngine;
using diag = System.Diagnostics;

public class AmbiguousNamespace: MonoBehaviour
{
    void Start()
    {
        GameObject foo = GameObject.Find("bar");
        if (foo == null)
        {       
            Debug.Log("failed to find bar!");
            diag.Debugger.Break();
        }
    }
}

现在,如果您不想使用名称空间,因为它可能会模糊您使用的名称空间,但仍然希望能够不必键入整个System.Diagno ...从而节省一些时间... blablabla还可以看看为此制作一个custom snippet

这将允许您为其设置关键字,并使用tab自动完成。例如,您可以创建一个片段“ sddb”,该片段在点击Tab时会自动完成为System.Diagnostics.Debbuger.Break();。我总是在可读性和不必每次都输入很长的内容之间找到一个很好的中间点。