统一调试

sma*_*llB 30 debugging monodevelop unity-game-engine

在目前这一刻,我正在做的是我正在打开Unity,双击我写的那些脚本之一,然后MonoDevelop打开,现在我必须团结一致,而且MonoDevelop我在做Run >> Run with >> Unity Debugger.

在Unity打开之后,当我按下统一播放按钮时,调试会话开始.但只有一次.如果我停止这个会话,Unity或者MonoDevelop我必须重复这整个过程,这非常繁琐.我必须打开Unity,关闭Unity,(我必须关闭它,因为下一步Run >> Run with >> Unity Debugger将打开统一,如果统一已经打开,我会收到错误,说只有一个统一实例可以一次打开一个项目).

我要问的是:
有没有更好的工作流程可以让我摆脱Unity的这种繁琐的开关,每次我停止调试会话时我都会正常启动而不进行这些繁琐的重复工作?
谢谢.

Sup*_*pig 28

在MonoDevelop的调试菜单中使用'Attach'; 你应该能够以这种方式附加到正在运行的Unity进程.(您可能需要确保在Unity的首选项中启用了相应的选项).


小智 6

我总是将默认脚本编辑器(统一首选项 -> 外部工具 -> 外部脚本编辑器)更改为 Visual Studio。这使您可以使用断点和预处理器宏来使调试更加容易。当您想开始调试时,请在 Visual Studio 中按 f5 将其连接到 unity,然后正常播放,如果遇到断点,则 Visual Studio 将接管。

您不必更改任何其他内容,也不必像现在一样继续打开和关闭事物。


100*_*101 5

另一种调试方法是使用:

Debug.LogError("foo");
Run Code Online (Sandbox Code Playgroud)

要么

Debug.LogWarning("foo"); 
Run Code Online (Sandbox Code Playgroud)

另一个注意事项是,您实际上可以将对象绑定到Log.这将导致编辑器在您迭代GameObjects列表时突出显示对象是问题.即:

Debug.LogWarning("this object broke", gameObject);
Run Code Online (Sandbox Code Playgroud)

如果在控制台窗口中打开"错误暂停",游戏将在满足LogError时自动暂停.但要注意,只要发生错误,它就会暂停.


小智 5

UnityVS 现在正式成为 Microsoft 的一部分,可作为 vs 2010、12 和 13 的附加组件使用。这是链接到各种版本的 MSDN 博客文章:http : //blogs.msdn.com/b/visualstudio/archive/2014 /07/29/visual-studio-tools-for-unity-1-9.aspx