![](/img/trans.png)
[英]Ambiguous reference CS0104: 'Debug' is an ambiguous reference between'UnityEngine.Debug' and 'System.Diagnostics.Debug'
[英]Mixing UnityEngine.Debug and System.Diagnostics.Debug
我将Visual Studio调试器附加到Unity3D以调试我的代码。
我都想
并在出现异常的情况下中断Visual Studio。 例如这样的...
着色器nLaserShader = Shader.Find(“ Particles / Additive”); 如果(nLaserShader == null){UnityEngine.Debug.Log(“无激光着色器!\\ n”); System.Diagnostics.Debugger.Break(); }
我必须使用UnityEngine命名空间,否则VS不会编译我的代码,并说Debug.Log不明确。
有没有办法避免键入完整的名称空间?
AFAIK避免每次需要调用含糊不清的内容时都不必键入整个名称空间的唯一方法是在名称空间中添加别名。 您仍然需要输入一些内容,但是至少可以将其缩短为所需的任何长度。 语法很简单。
using diag = System.Diagnostics;
只需键入diag.Debbuger.Break();
即可调用System.Diagnostics.Debugger.Break()
diag.Debbuger.Break();
,同时能够Debug.Log()
调用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您也可以查看为其制作自定义代码段 。
这将允许您为其设置关键字,并使用制表符自动完成。 例如,您可以制作一个片段“ sddb”,该片段将自动完成到System.Diagnostics.Debbuger.Break();
;。 在点击选项卡。 我总是在可读性和不必每次都输入很长的内容之间找到一个很好的中间点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.