
如何使用 Microsoft Visual Studio 2022 调试代码
Unity 支持多种代码编辑器,包括 JetBrains Rider、Atom 和 Microsoft Visual Studio Code 以及 Visual Studio。Visual Studio 是与 Unity 编辑器默认安装的内置包。
本文提供了使用 Microsoft Visual Studio 调试器 2022 版的技巧,帮助您高效修复代码中的错误。如果您想了解更多关于 Visual Studio 的一般生产力技巧,请查看我们的博客文章“加速您在 Visual Studio 中工作流程的 10 种方法。”

安装 Visual Studio 2022 调试工具
Visual Studio 2022 内置支持 Unity,使您能够轻松编写和编辑脚本,访问 Unity 特定功能,并在不离开 IDE 的情况下调试游戏代码。它提供了 IntelliSense 代码补全、语法高亮和代码片段等功能,帮助您更快、更高效地编写代码。此外,您还可以获得调试工具,包括设置断点、逐步执行代码、检查变量和在运行时评估表达式的能力。
Visual Studio 有多个版本,包括 免费社区版。
本文基于 Visual Studio 2022 版。2019 版具有相同的功能,但截图会有所不同。默认情况下,Unity的新安装将安装社区版的Visual Studio,以及一个名为与Unity的游戏开发的扩展,该扩展将Visual Studio与Unity集成在一起。如果您不选择安装Visual Studio,则可以在这里获取副本。有关设置Visual Studio以与Unity一起使用的详细信息,请参见这里。
在Unity编辑器中安装Visual Studio后,打开Unity > Preferences > External Tools,并将Visual Studio选择为外部脚本编辑器。

将 Visual Studio 调试器附加到 Unity
为了在编辑器中运行时启用对项目代码的实时调试,Visual Studio调试器需要附加到编辑器。这允许调试器访问并与游戏的运行时状态进行交互。让我们来看看附加它的步骤:
打开您想要调试的Unity项目。
在Unity中,转到Edit > Preferences(Windows)或Unity > Preferences(macOS),并确保Visual Studio被设置为首选外部脚本编辑器。如果没有,从下拉菜单中选择它。
通过双击项目视图中的脚本文件或通过Assets > Open C# Project菜单选项在Visual Studio中打开所需的脚本。
在Visual Studio中,转到Debug > Attach Unity Debugger或单击工具栏中的Attach to Unity按钮。将打开一个窗口,列出可用的Unity实例。
选择运行您项目的Unity实例(通常显示为“Unity Editor(您的项目名称)”,然后单击附加。
Visual Studio现在已连接到Unity,您可以开始设置断点并调试代码。当游戏在编辑器中运行时,Visual Studio调试器将在断点处暂停执行,允许您检查游戏状态并调试代码,如下一节所示。
如果这是您的第一次调试会话,您将看到一个窗口,提供启用当前会话或所有会话调试的选项。建议选择前者,“启用此会话的调试”。

使用断点
断点是代码中特定行的标记。当调试器遇到断点时,它会停止执行程序,允许您检查变量、对象和调用堆栈的当前状态。然后,您可以逐行执行代码,观察程序运行时状态的变化。
要在Visual Studio中设置断点,请打开脚本并单击代码编辑器左侧边距中您希望暂停执行的代码行旁边。或者,将光标放在该行上并按F9。一个红点将出现,指示已设置断点,如上方顶部图像所示。
现在转到Unity编辑器并播放游戏。当程序执行到断点所在的行时,Visual Studio将成为前台活动应用程序,程序执行将在断点行暂停。此时,您可以使用Visual Studio工具检查变量。
最简单的选项是将鼠标悬停在对象、属性或简单变量上。Visual Studio将添加一个覆盖面板(上方拼贴图中的底部图像),让您查看函数的重载、对象的属性以及属性或变量的值。
如果覆盖面板上有一个指向右侧的箭头,则单击此箭头将展开面板,以提供有关对象属性内部值的更多信息。
在运行的程序中检查值的能力是非常有用的。
一旦Visual Studio连接到Unity,一个新的工具栏将添加到调试 > 附加到Unity的右侧。此工具栏中的四个按钮从左到右执行以下操作:
- 继续/暂停执行:如果程序当前正在播放,则会显示一个暂停图标,您可以单击该图标以暂停执行。程序暂停时,会出现一个右箭头图标,指示按下将恢复程序执行。
- 逐步越过:按下此按钮将执行高亮的代码行,并在下一行再次暂停。
- 逐步进入:如果活动代码行包含一个函数,其中源代码是项目的一部分,则此按钮允许开发者逐步进入该函数及其代码。
- 退出:这将程序执行移出当前函数。

条件断点
条件断点是断点的一种高级形式,仅在满足特定条件时暂停执行。当您想要调查特定场景或当问题仅在某些条件下发生时,这可能会很有用。
如果您右键单击侧边栏或底部面板断点窗口中的断点,将显示上下文菜单。选择 编辑断点.上图所示的对话框将显示。
更多调试工具
在Visual Studio中,调试器窗口提供多个窗口,帮助您在程序在断点处暂停时检查应用程序的状态。检查程序状态的三个基本窗口是局部变量、监视和调用堆栈。以下部分将逐一查看每个窗口。

局部变量
局部变量窗口显示当前执行代码范围内的局部变量及其值。这包括在当前方法或块内声明的变量,以及方法参数。局部变量窗口允许您快速检查当前断点处变量的值,这对于识别可能导致代码问题的错误或意外值非常有帮助。请记住,如果一行以右箭头开头,则可以展开,而向下箭头将缩小展开的窗口。

监视
监视窗口允许您跟踪在调试过程中希望监控的特定变量或表达式。与显示当前范围内变量的局部变量窗口不同,监视窗口允许您手动添加变量或表达式,而不管它们的范围。这对于跟踪程序执行过程中某些变量的状态或根据应用程序的当前状态评估表达式非常有用。
输入作用域内变量或对象的名称,将添加一个面板以便您检查它。要在 Visual Studio 中添加监视,请右键单击代码中的变量或表达式,并从上下文菜单中选择 添加监视,或直接在监视窗口中输入表达式。

调用堆栈
调用堆栈窗口显示导致当前断点的调用方法序列,使您能够追踪程序的执行路径。调用堆栈中的每个条目代表一个方法调用,最近的调用位于列表的顶部。通过检查调用堆栈,您可以确定代码如何到达当前执行点,帮助您识别问题或意外行为的根本原因。
除了显示方法调用的顺序外,调用堆栈窗口还允许您在堆栈的不同级别之间导航。通过双击列表中的条目,您可以跳转到源文件中相应的代码行,并查看该方法的局部变量和参数。这使得理解特定方法被调用的上下文以及分析数据在应用程序中的流动变得更加容易。

调试构建
Visual Studio 调试器不仅对在 Unity 编辑器中运行的游戏有用,对构建版本也同样适用。您需要确保构建包含调试器使用的数据。您可以通过 文件 > 构建设置 来完成此操作,在显示的窗口中选择 开发构建 和 脚本调试(见上图)
在 Windows 的主菜单中选择 调试 > 附加 Unity 调试器,或在 MacOS 的顶部菜单中选择 调试 > 附加到进程。
选择名为 Unity Player 的实例。现在所有断点、局部变量和监视在开发构建中均可用。

更多高级 Unity 创作者的资源
您打算使用其他代码编辑器吗?阅读我们关于 Microsoft Visual Studio Code 的提示文章。
Unity 提供了一些高级指南,帮助专业开发人员优化他们的游戏代码。创建 C# 风格指南:编写可扩展的更清晰代码 汇集了行业专家关于如何创建代码风格指南的建议,以帮助您的团队开发一个干净、可读且可扩展的代码库。
我们用户中另一个受欢迎的指南是 70+ 个提高 Unity 生产力的技巧。它包含了节省时间的技巧,以改善您与 Unity 2020 LTS 的日常工作流程,包括即使是经验丰富的开发人员也可能错过的技巧。
在 Unity 最佳实践中心 中找到所有 Unity 的高级电子书和文章。