您想找什么?
Hero background image
如何使用 Microsoft Visual Studio 2022 调试代码

Unity 支持多种代码编辑器,包括 JetBrains RiderAtom以及 MicrosoftVisual Studio CodeVisual Studio。Visual Studio 是一个内置包,默认与 Unity Editor 一起安装。

本文提供了使用 2022 版 Microsoft Visual Studio 调试器的技巧,使您能够有效地修复代码中的错误。如果您想了解有关 Visual Studio 中常规生产力技巧的更多信息,请查看我们的博客文章“在 Visual Studio 中加速工作流程的 10 种方法”。

VisualStudio
安装 Visual Studio 2022 调试工具

Visual Studio 2022 内置对 Unity 的支持,让您可以轻松编写和编辑脚本、访问 Unity 特定功能以及调试游戏代码,而无需离开 IDE。它提供 IntelliSense 代码完成、语法高亮和代码片段等功能,帮助您更快、更高效地编写代码。此外,您还可以获得调试工具,包括设置断点、逐步执行代码、检查变量和在运行时评估表达式的能力。

Visual Studio 有多个版本,包括一个 免费社区版本

本文基于 Visual Studio 2022 版。2019版本具有相同的功能,但屏幕截图会略有不同。默认情况下,新安装的 Unity 将安装 Visual Studio 的社区版本,以及将 Visual Studio 与 Unity 集成在一起的扩展“ 使用 Unity 进行游戏开发”。如果您不选择安装 Visual Studio,那么您可以 在此处获取一份副本。有关设置 Visual Studio 以与 Unity 配合使用的详细信息请参见 此处

在 Unity 编辑器中安装 Visual Studio 后,打开 Unity > 首选项 > 外部工具,然后选择 Visual Studio 作为外部脚本编辑器。

将调试器附加到 Unity
将 Visual Studio 调试器附加到 Unity

为了在编辑器中运行时启用项目代码的实时调试,Visual Studio 调试器需要将其自身附加到编辑器。这允许调试器访问并与游戏的运行时状态进行交互。让我们来看看附加它的步骤:

打开您想要调试的 Unity 项目。

在 Unity 中,转到 “编辑”>“首选项”(Windows)或 “Unity”>“首选项”(macOS),并确保将 Visual Studio 设置为首选外部脚本编辑器。如果没有,请从下拉菜单中选择。

通过双击项目视图中的脚本文件或通过 资产>打开 C# 项目 菜单选项在 Visual Studio 中打开所需的脚本。

在 Visual Studio 中,转到 “调试”>“附加 Unity 调试器” 或单击工具栏中的 “附加到 Unity” 按钮。将打开一个窗口,其中列出可用的 Unity 实例。

选择运行您的项目的 Unity 实例(通常显示为“Unity 编辑器(您的项目名称)”,然后单击“附加”。

Visual Studio 现已连接到 Unity,您可以开始设置断点并调试代码。当游戏在编辑器中运行时,Visual Studio 调试器将在断点处暂停执行,允许您检查游戏状态并调试代码,如下一节所示。

如果这是您的第一次调试会话,那么您将看到一个窗口,其中提供了为当前会话或所有会话启用调试的选项。建议选择前者“为此会话启用调试”。

VisualStudio
使用断点

断点是特定代码行上的标记。当调试器遇到断点时,它会停止执行程序,让您检查变量、对象和调用堆栈的当前状态。然后,您可以逐行执行代码,观察程序运行时状态如何变化。

要在 Visual Studio 中设置断点,请打开脚本并单击代码编辑器左边距中要暂停执行的代码行旁边的位置。或者,将光标放在该行上并按 F9。将出现一个红点,表示已设置断点,如上图所示。

现在转到 Unity 编辑器并玩游戏。当程序执行到断点处时,Visual Studio 将成为前台活动应用程序,程序执行在断点处暂停。此时,您可以使用 Visual Studio 工具检查变量。

最简单的选项是将鼠标悬停在对象、属性或简单变量上。Visual Studio 将添加一个覆盖面板(上面拼贴画的底部图像),让您查看函数的重载、对象的属性以及属性或变量的值。

如果覆盖层有一个向右的箭头,则单击此箭头将展开面板,以提供有关对象属性的内部值的更多见解。

检查正在运行的程序中的值的能力非常有用。

一旦将 Visual Studio 附加到 Unity,就会在 “调试”>“附加到 Unity”的右侧添加一个新的工具栏。此工具栏中的四个按钮从左到右执行以下操作:

  • 继续/暂停执行:如果程序正在播放,则会显示一个暂停图标,您可以单击该图标来暂停执行。程序暂停后,会出现一个右箭头图标,表示按下将恢复程序执行。
  • 跨过:按下此按钮将执行突出显示的代码行并在下一行再次暂停。
  • 步入:如果活动代码行包含一个函数,而该函数的源代码是项目的一部分,则此按钮允许开发人员进入并执行该函数及其代码。
  • 走出去:这会将程序执行移出当前函数。
VisualStudio
条件断点

条件断点是断点的高级形式,仅当满足指定条件时才会暂停执行。当您想要调查特定场景或仅在特定条件下发生问题时,这会很有用。

如果在侧边栏或底部面板断点窗口中右键单击断点,则会显示上下文菜单。选择 “编辑断点”。将显示如上图所示的对话框。

更多调试工具

在 Visual Studio 中,调试器窗口提供了多个窗口,可帮助您在应用程序在断点处暂停时检查其状态。检查程序状态的三个基本窗口是 Locals、Watch 和 Call Stack。以下各节将对每个问题进行讨论。

VisualStudio
本地人

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

监视窗口
观看

通过“监视”窗口,您可以跟踪在调试过程中想要监视的特定变量或表达式。与显示当前范围内变量的“局部”窗口不同,“监视”窗口允许您手动添加变量或表达式,而不管其范围如何。这对于在整个程序执行过程中跟踪某些变量的状态或根据应用程序的当前状态评估表达式非常有用。

输入范围内的变量或对象的名称,然后会添加一个面板以允许您检查它。要在 Visual Studio 中添加监视,请右键单击代码中的变量或表达式,然后从上下文菜单中选择 “添加监视”,或直接在“监视”窗口中键入表达式。

调用堆栈窗口
调用堆栈

调用堆栈窗口显示导致当前断点的方法调用序列,允许您跟踪程序的执行路径。调用堆栈中的每个条目代表一个方法调用,最近的调用位于列表顶部。通过检查调用堆栈,您可以确定代码如何到达当前执行点,从而帮助您识别问题或意外行为的根本原因。

除了显示方法调用的序列之外,“调用堆栈”窗口还允许您浏览堆栈的不同级别。通过双击列表中的条目,您可以跳转到源文件中相应的代码行并查看该方法的局部变量和参数。这使得理解调用特定方法的上下文以及分析应用程序中的数据流变得更加容易。

Build
调试构建

Visual Studio 调试器不仅适用于在 Unity 编辑器中运行的游戏,也适用于构建。您需要确保构建包含调试器使用的数据。您可以通过 文件 > 构建设置执行此操作,然后在显示的窗口中选择 开发构建脚本调试 (参见上图)

对于 Windows,从主菜单中选择 “调试”>“附加 Unity 调试器” ,或者对于 MacOS,从顶部菜单中选择 “调试”>“附加到进程”

选择名为 Unity Player 的实例。现在,所有断点、本地人和监视均可在开发版本中使用。

编写干净的代码
面向高级 Unity 创作者的更多资源

您打算使用其他代码编辑器吗?阅读有关 Microsoft Visual Studio Code技巧的文章。

Unity 提供了许多高级指南来帮助专业开发人员优化他们的游戏代码。创建 C# 样式指南:编写更简洁、可扩展的代码 汇集行业专家关于如何创建代码样式指南的建议,以帮助您的团队开发干净、可读且可扩展的代码库。

另一个受我们用户欢迎的指南是 《70多条关于如何提高 Unity 生产力的技巧》。它包含了许多节省时间的技巧,可帮助您通过 Unity 2020 LTS 改善日常工作流程,其中包括经验丰富的开发人员可能会错过的技巧。

Unity 最佳实践中心查找 Unity 的所有高级电子书和文章。

您喜欢本文吗?
是的!
还行。