在 Visual Studio 中调试 Unreal Engine 蓝图

Visual Studio 通过在调用堆栈和局部变量窗口中显示有关 Unreal Engine 蓝图的信息来改进调试 Unreal Engine 项目。 此功能允许在一个调试会话中调试蓝图代码以及C++代码。 借助此功能,可以轻松跟踪蓝图与C++代码之间的交互,从而更轻松地识别和修复 bug。

蓝图是 Unreal Engine 中提供的可视化脚本技术,用于快速原型制作和开发。 它们可以与C++代码交互,在许多情况下,游戏最初设计为蓝图,后来转换为C++以提高性能。 如果你花时间将蓝图转换为C++,此功能可让你将蓝图与C++代码一起分析,以帮助进行转换。 这减少了在 Visual Studio 和 Unreal 编辑器之间切换的需求,从而提供无缝调试体验并减少上下文切换。

Visual Studio Blueprint 调试器支持提供:

  • 集成调用堆栈:蓝图帧显示在与C++帧相同的调用堆栈中。
  • 变量检查:查看蓝图节点引脚,其值会出现在本地变量窗口中。
  • 统一调试体验:在同一会话中调试蓝图和C++代码。
  • 断点支持:在蓝图调用的C++代码中设置断点。 如果有多个蓝图可以调用C++代码,但不确定具体是哪些蓝图会调用及其原因,这非常有用。

先决条件

  • 安装了包含使用C++进行游戏开发的工作负载的 Visual Studio 2022 17.14 或更高版本。
  • 适用于 Unreal Engine Blueprints 组件的 Visual Studio 调试器工具
  • Visual Studio Tools for Unreal Engine 组件。
  • Visual Studio 的 Unreal Engine 插件。
  • 通过调试符号安装的 Unreal Engine。
  • 适用于 Unreal Engine 的 Visual Studio 插件。

安装先决条件

运行 Visual Studio 安装程序以安装调试 Unreal Engine 蓝图所需的组件。 有关安装 Visual Studio Tools for Unreal Engine 的详细信息,请参阅 Visual Studio Tools for Unreal Engine 入门

  • “工作负载” 窗格中,确保安装使用C++进行游戏开发工作负载,以及 适用于 Unreal Engine 的 Visual Studio 调试器工具适用于 Unreal Engine 的 Visual Studio 工具

    Visual Studio 安装程序的屏幕截图。选择了具有C++工作负荷的游戏开发。在安装详细信息窗格中,选择了 Visual Studio Tools for Unreal Engine、Visual Studio Debugger tools for Unreal Engine Blueprints、HSL Tools 和 Windows 11 SDK。

安装 Unreal Engine 调试符号

为使用 Visual Studio 调试的每个 Unreal Engine 版本安装调试符号:

  1. 打开 史诗游戏启动器

  2. 选择 “Unreal 引擎 ”窗格,然后选择“ ”窗格。

  3. 选择引擎版本的下拉菜单,然后选择 “选项

    Epic Games 安装程序的屏幕截图。已选择“启动”下拉列表,并突出显示了“选项”。

  4. 在“选项”对话框中,选择 用于调试的编辑器符号

    Epic Games 安装选项的屏幕截图。已选择用于调试的编辑器符号。

  5. 选择 “应用”,然后等待下载完成。

安装 Visual Studio 的 Unreal Engine 插件

Visual Studio 的 Unreal Engine 插件将安装到 Unreal Engine 中。 在 Visual Studio 中打开 Unreal Engine 项目时,系统会自动激活它。 此插件提供了 Unreal Engine 和 Visual Studio 之间必要的集成,用于在 Visual Studio 调试器的本地变量窗口中显示蓝图节点引脚值。

有关手动安装说明,请参阅 vc-ue-extensions

如果有可在 Visual Studio 中打开的 Unreal Engine 项目,则安装插件的另一种方法是通过 Unreal Engine 配置窗口在 Visual Studio 中:

  • 在 Visual Studio 中打开 Unreal Engine 项目后,选择 Project>Configure Tools for Unreal Engine 以打开 Unreal Engine 集成配置 窗口。
  • “Visual Studio 集成工具状态 ”部分中,选择“ 安装到项目 ”或 “安装到引擎 ”以满足你的需求。

如果未看到安装按钮,请选择刷新图标以刷新状态。 如果需要手动安装插件,请选择“ 手动安装说明 ”链接以打开包含安装说明 的vc-ue-extensions 页。

Unreal Engine 集成配置窗口的屏幕截图。在“Visual Studio 集成工具状态”部分中,突出显示了“刷新”、“安装到项目”和“安装到引擎”按钮。此外,还突出显示了“手动安装说明”链接。

设置测试项目

若要测试 Blueprint 调试器功能,请创建包含蓝图和C++代码的项目。 Unreal Engine First Person 模板效果良好。

  1. 打开 Unreal Engine 编辑器并创建新的 First Person 项目。

  2. 确保已选择 C++

    Unreal Engine 编辑器新项目对话框的屏幕截图。选择了“第一个人”和“BlueEpic Games”安装选项。已选择用于调试的编辑器符号。

  3. 创建项目后,关闭所有 Unreal 编辑器实例。

  4. 在 Visual Studio 中,打开生成的 Visual Studio 解决方案文件(.sln)。

安装适用于 Unreal Engine 的 Visual Studio 插件

若要支持在 Visual Studio 调试器中查看蓝图的节点固定变量,还需要安装适用于 Unreal Engine 的 Visual Studio 插件。 插件可以安装在引擎或游戏项目源中。 在 Visual Studio 中打开 Unreal Engine 项目时,它会自动激活。 有关安装说明,请参阅 vc-ue-extensions

调试蓝图

按照以下步骤设置断点、检查蓝图函数并查看其节点引脚值:

  1. 在 Visual Studio 中,找到 AttachWeapon 武器组件类中的方法。 例如,如果命名项目 FirstPerson,该函数将位于文件中 FirstPersonWeaponComponent.cpp

  2. AttachWeapon 方法的开头添加断点。 当玩家在游戏中拿起武器时,将调用此方法:

    Visual Studio 中 AttachWeapon 函数的屏幕截图。断点位于函数的第一行。

  3. 在 Visual Studio 解决方案配置 下拉列表中,选择 “开发编辑器

    Visual Studio 解决方案配置下拉列表的屏幕截图。已选择开发编辑器。

  4. 在 Visual Studio 中,编译并运行项目以打开 Unreal 编辑器。

  5. 在 Unreal 编辑器中,选择绿色 的“播放 ”按钮以启动游戏。

  6. 在正在运行的游戏中,按 W 键向前移动,直到你与武器相撞并触发断点。

  7. 命中断点时,检查调用堆栈窗口。 蓝图堆栈帧会出现在你的 C++ 堆栈帧之间:

    Visual Studio 中调用堆栈窗口的屏幕截图。AttachWeapon 中的断点位于调用堆栈的顶部。调用堆栈中突出显示了 BP_PickUp_Rifle::ExecuteUbergraph_BP_PickUp_Rifle 和 BP_PickUp_Rifle::BndEvt___BP_PickUp_Rifle_TP_PickUp_K2Node_ComponentBoundEvent_1_OnPickUp_DelegateSignature 的两个蓝图条目。

  8. 双击调用堆栈中的第一个蓝图帧。

  9. 打开 “局部变量 ”窗口以查看与蓝图节点关联的变量。 可以看到蓝图节点引脚的值:

    Visual Studio 中局部变量窗口的屏幕截图。蓝图信息 > 节点引脚 > 可用引脚已扩展以显示蓝图的值,例如 EntryPoint、PickUpCharacter、HasRifle 等。

概要

Visual Studio Blueprint 调试器提供无缝调试体验,以弥合 Unreal Engine 项目中C++和蓝图代码之间的差距。 使用此集成方法,可以:

  • 跟踪从C++到蓝图和返回的执行流。
  • 检查蓝图变量、节点固定值和C++变量。
  • 在与 C++ 代码相同的调试会话中逐步执行蓝图执行帧。

这种统一的调试体验有助于跨两种编码范例高效地解决问题,无需在不同的调试工具之间切换。