Visual Studio 2022 版本 17.12 为 Unreal Engine 项目提供直接支持。
以前,必须先生成 Microsoft Visual Studio 项目,然后才能在 Visual Studio 中使用 Unreal Engine 项目。 这个过程很繁琐。 每当从 Unreal Engine 编辑器或其他团队成员中添加新资产时,必须重新生成 Visual Studio 项目,以便与 Unreal Engine 项目保持同步。
现在,借助对 Unreal Engine 项目(.uproject
)文件的直接支持,可以直接在 Visual Studio 中使用 Unreal Engine 项目。 此集成可实现无缝编辑、调试和项目文件管理,而无需生成和重新生成 Visual Studio 项目文件的耗时过程。
先决条件
必须安装以下内容才能在 Visual Studio 中使用 Unreal Engine 项目:
- Visual Studio 版本 17.12 预览版 2 或更高版本。
- Unreal Engine 版本 4.27 或 Unreal Engine 版本 5 及更高版本。
- Visual Studio Tools for Unreal Engine。 有关安装说明,请参阅 安装 Visual Studio Tools for Unreal Engine。
- 下载 Lyra 示例游戏。 请参阅 Lyra 示例游戏的“下载 Lyra 初学者游戏”部分,了解下载说明。 如果通过 Unreal Engine 的源代码安装获取了该版本,该版本不包含生成和运行游戏所需的资产。 使用下载说明通过 Epic 安装程序获取所需的一切。
Unreal Engine 5.3 或更早版本的配置
对于 5.4 之前的 Unreal Engine 版本,请按照以下步骤启用 Unreal Engine .uproject
与 Visual Studio 的集成。 无论您是从 Epic Games Launcher 安装 Unreal Engine 还是从源代码构建它,这些步骤都适用。
- 从 Unreal Engine GitHub 存储库下载特定于 Unreal Engine 版本的修补程序。 例如,
UnrealBuildTool-5.2.patch
为 Unreal Engine 版本 5.2 提供补丁。 - 打开 PowerShell 或命令提示符窗口,并导航到安装了 Unreal Engine 的根目录。 如果 Unreal Engine 安装在受保护的目录中(如
C:\Program Files\Epic Games\UE_5.3
)中,则需要管理员提升来应用修补程序。 - 使用命令
git apply <path to the downloaded patch file>
应用修补程序。 例如:git apply C:\Users\someuser\Downloads\UnrealBuiltTool-5.3.patch
。 如果失败,请尝试git apply -v --ignore-whitespace --ignore-space-change <path to the downloaded patch file>
。
在 Visual Studio 中打开本机 Unreal Engine 项目
可通过两种方法在 Visual Studio 中打开本机 Unreal Engine 项目:
- 文件>打开>文件夹 在文件夹中只有一个项目(
.uproject
)时使用。 - 文件>打开>Unreal Engine 项目,以在文件夹中有多个 Unreal Engine 项目文件时选择要打开的特定
.uproject
文件。
在此示例中,我们使用 Lyra 游戏项目演示如何在 Visual Studio 中打开本机 Unreal Engine 项目。
在 Visual Studio 中,打开“文件”菜单,然后选择“打开>打开文件夹。
导航到安装 Lyra 游戏项目(
LyraStarterGame.uproject
)的目录,然后选择 选择文件夹。选择文件夹后,项目文件将显示在 解决方案资源管理器 中,消息显示在有关设置工作区的 输出 窗口中。
此时会显示一条消息,即 Unreal Engine 项目支持已激活,并且已禁用 CMake 和 MSBUILD 等其他生成系统。 可以通过单击消息角处的 X 来消除此消息。
在解决方案资源管理器中查看项目
解决方案资源管理器 窗口显示许多属于 Unreal Engine 项目的文件和文件夹,例如 Platforms
、Plugins
和 Source
文件夹。 还可以查看 Unreal Engine .uproject
文件。 引擎 文件夹包含 Unreal Engine 的源目录。
解决方案资源管理器 经过筛选,以专注于源代码。 默认情况下,将筛选出 Content
文件夹,其中包含纹理、模型等二进制资产。 可以在 Unreal Engine 编辑器中打开这些资产。 通常,二进制文件不会显示在 Visual Studio 解决方案资源管理器中。
无需重新生成项目,才能查看或编辑 Visual Studio 外部添加的新资产。
Unreal Engine 配置页
Visual Studio 提供 Unreal Engine 项目配置页。 此页面显示 Unreal Engine 功能的状态,并允许你访问更多功能。
若要从 Visual Studio 主菜单中访问此页面,请选择 Project>配置 Unreal Engine 工具:
配置页具有红色/绿色状态指示器,以及“总体配置状态”、“Unreal 生成工具状态”、“Unreal 引擎目标”、“蓝图支持”、“Visual Studio 集成工具状态”等选项的刷新按钮。
Unreal 生成工具状态
若要确保拥有最新的 Unreal 生成工具(UBT),请选择 Unreal 生成工具状态的刷新图标。
在此示例中,将显示一条消息,指出 Unreal 生成工具未使用工作区生成器的最新可用版本。 选择 更新 将 Unreal 生成工具更新到最新版本:
在“输出”窗口中,消息会在准备 Unreal Engine 生成工具时出现。 将显示一条消息,指出工作区已准备就绪,之后可以开始添加和编辑文件。
Unreal Engine 目标
在构建 Unreal Engine 项目时,可以选择不同的生成配置,这些配置称为 目标。
“Unreal Engine 目标”选项是这些目标的生成位置。 选择刷新图标以刷新 Unreal Engine 目标列表,并打开窗口,可在其中选择要创建的目标配置:
有关目标组合的详细信息,请参阅 Unreal Engine 的文档 生成配置说明。
在此示例中,LyraClient、DebugGame,并在下拉列表中选择 Win64。
- 选择 添加,将其添加到要生成的配置列表中。
- 选择“生成目标”,为每个已选中复选框的配置创建相应的配置。
生成目标后,可以根据选择生成配置中所述选择它们。 生成目标时,请监视输出窗口中的错误,因为某些组合可能不受支持。
可以通过取消选中不需要的目标,然后选择 “生成目标” 按钮来删除目标。 选择 生成目标时,未选择的目标会被移除,但在重新加载项目之前,它们不会从此列表中消失。
编辑目标属性
若要编辑 Unreal Engine 目标属性,请在解决方案资源管理器中右键单击粗体目标文件,然后选择 编辑 Unreal Engine 目标属性。
例如,如果 LyraEditor.Target.cs
是启动目标(在这种情况下,解决方案资源管理器中为粗体),请右键单击它并选择 编辑此 Unreal Engine 目标属性。 这会在编辑器中打开 UETargetProperties.json
文件。
此时会显示一个菜单,底部是编辑此 Unreal Engine 目标的选项。 选择此选项将在编辑器中打开 UETargetProperties.json。
然后,可以更改目标属性,例如命令行参数。
编辑项目设置
若要编辑 Unreal Engine 项目设置,请在解决方案资源管理器中右键单击 .uproject
文件,然后选择 编辑 Unreal Engine 项目设置。
ProjectSettings.json
文件将在编辑器中打开。 然后,可以更改项目设置,例如要从解决方案资源管理器视图中排除哪些项目文件和引擎文件、要从 IntelliSense 中排除哪些共享包含路径等。 可以使用这些设置来排除不需要加速 IntelliSense 的文件。
此时会显示一个菜单,底部是编辑 Unreal Engine 项目设置的选项。 选择此选项将在编辑器中打开“.uproject”文件。
选择构建配置
若要选择生成配置,请从“配置”下拉列表中选择所需的目标:
配置下拉菜单包含项目:DebugGame - Win64 和 Development - Win64。
如果要生成的目标不在列表中,请添加它,如 unreal Engine Targets 中所述。
在 Visual Studio 中编辑和调试
可以在 Visual Studio 中编辑、生成和调试 Unreal Engine 项目。 若要了解如何在 Visual Studio 中添加 Unreal Engine 模块、类和插件,请参阅 在 Visual Studio中添加 Unreal Engine 类、模块和插件。
可以在代码中设置断点,然后在 Unreal Engine 编辑器中运行游戏。 命中断点时,可以在 Visual Studio 中调试代码。
默认情况下,Visual Studio 仅生成一个目标:开发 - Win64。 此目标生成并启动已加载游戏项目的 Unreal 编辑器。
如果在 Visual Studio 中打开了 Lyra 游戏示例项目的文件夹,请按照以下步骤尝试调试:
- 在 Visual Studio 中,打开
LyraGameplayAbility_RangedWeapon.cpp
。 在 解决方案资源管理器 的“搜索”窗格中搜索该文件,或在 Games>LyraStarterGame>Source>LyraGame>武器>LyraGameplayAbility_RangedWeapon.cpp下找到该文件。 - 在
LyraGameplayAbility_RangedWeapon.cpp
中,转到大约第 477 行。 查找函数void ULyraGameplayAbility_RangedWeapon::OnTargetDataReadyCallback
。 - 通过按 F9 将断点置于函数上。
- 选择 “调试”>“开始调试”,在 Visual Studio 中运行示例游戏。 为 Unreal 引擎编辑器提供一些时间来加载游戏。
- 在 Unreal 引擎编辑器中,选择工具栏上的“播放”按钮(或按
Alt+p
)启动游戏。 - 在 Lyra 游戏中,使用
w
、a
、s
、d
键将玩家向左导航到 消除通道 门户。 将玩家置于入口门户上以加载游戏。 - 游戏运行后,单击鼠标按钮以触发,你应该会在 Visual Studio 中看到断点:
常见问题和解决方案
- 引擎和游戏代码必须位于同一驱动器上。 如果断点未被命中,请参阅游戏源和引擎源位于不同的驱动器。
- 不支持同一文件夹中的多个
.uproject
文件。 若要在同一文件夹中有多个项目文件时打开特定的.uproject
文件,请使用 文件>打开>Unreal Engine 项目。 - 如果通过 文件>打开>Unreal Engine 项目,该项目不会在 Visual Studio 的 文件>最近项目和解决方案 列表中显示。 如果通过 文件打开 Unreal Engine 项目>打开文件夹,则打开的 Unreal Engine 项目将显示在最近打开的项目列表中。
- 某些扩展可能不适用于作为 Unreal Engine 项目打开的项目。
- 源文件的属性窗口为空。 这是有意为之的设计。
- 文件夹视图中有一个 Visual Studio 解决方案文件。 Unreal Engine 将生成此文件,但 Visual Studio 不使用该文件,你可以忽略它。
游戏源和引擎源位于不同的驱动器上
如果 Unreal Engine 源代码和游戏源代码位于不同的驱动器上,则打开游戏代码项目时会显示错误。 例如:如果你的游戏位于 C:\Users\MyUser\MyGame
,则 Unreal Engine 必须位于 C:\
驱动器上的某个位置;否则,Visual Studio 中的 Unreal Engine 项目支持不可用:
建议使用以下解决方案之一:
解决方案 #1:将游戏和引擎源移动到同一驱动器
最简单的解决方案是使用 Windows File Explorer
将游戏项目移动到 Unreal 引擎所在的同一逻辑驱动器。
如果要移动通过 Epic Games Launcher
安装的 Unreal Engine 源,请卸载该引擎,然后将其重新安装到游戏所在的同一驱动器。 这样,引擎配置文件就会反映新位置。
在同一驱动器上拥有游戏源和引擎源后,可以在 Visual Studio 中打开 .uproject
。
解决方案 #2:创建 Unreal Engine 的符号链接并更改引擎关联属性
如果将引擎源和游戏源移动到同一驱动器不可行,则可以创建指向 Unreal Engine 源的符号链接,并更改 .uproject
文件中 EngineAssociation
属性以匹配。
在本示例中,假设 Unreal Engine 位于 C:\Program Files\Epic Games\UE_5.4
,并且游戏位于 Q:\src\game
。
- 打开命令提示符(而不是 PowerShell)窗口。
- 导航到存有游戏源的驱动器。 例如,
cd /d Q:\
。 - 创建指向 Unreal Engine 的符号链接。
mklink
命令采用一个链接参数,该参数指定符号链接名称,即目录的位置如何显示在文件系统中。 目标参数是要链接到的内容。 例如,mklink /d "Q:\UE-Link" "C:\Program Files\Epic Games\UE_5.4"
创建一个名为Q:\UE-Link
的符号链接,该链接指向C:
驱动器上的 Unreal Engine 目录。 - 打开游戏的
.uproject
文件,并将EngineAssociation
属性更改为创建的符号链接文件夹。 例如,"EngineAssociation": "Q:\\UE-Link"
。
现在,可以在 Visual Studio 中打开 .uproject
,因为游戏源和引擎源似乎位于同一驱动器上。 符号链接负责将文件引用重定向到引擎。
解决方案 #3:创建 Unreal Engine 的符号链接并更改配置文件
此解决方案很脆弱,因为它更改了配置文件,并且可能会在下次更新 Unreal Engine 时还原更改。
对于此示例,假设 Unreal Engine 位于 C:\Program Files\Epic Games\UE_5.4
,并且游戏位于 Q:\src\Game
- 打开命令提示符(而不是 PowerShell)窗口。
- 导航到存储游戏源文件的驱动器。 例如,
cd /d Q:\
。 - 创建指向 Unreal Engine 的符号链接。
mklink
命令采用一个链接参数,该参数指定符号链接名称,即目录的位置如何显示在文件系统中。 目标参数是要链接到的内容。 例如,mklink /d "Q:\UE-Link" "C:\Program Files\Epic Games\UE_5.4"
创建一个名为Q:\UE-Link
的符号链接,该链接指向C:
驱动器上的 Unreal Engine 目录。 - 在编辑器中打开
C:\ProgramData\Epic\UnrealEngineLauncher\LauncherInstalled.dat
。 - 将
InstallLocation
的值替换为创建的符号链接路径。 此示例适用于安装在C:
驱动器上的 UE 5.4,符号链接位于Q:
驱动器上。
以前:
{
"InstallationList": [
{
"InstallLocation": "C:\\Program Files\\Epic Games\\UE_5.3",
...
"AppName": "UE_5.4"
},
}
之后:
{
"InstallationList": [
{
"InstallLocation": "Q:\\UE-Link",
...
"AppName": "UE_5.4"
},
}
现在,可以在 Visual Studio 中打开 .uproject
,因为游戏源和引擎源似乎位于同一驱动器上。 符号链接负责将文件引用重定向到引擎。
相关内容
Visual Studio Tools for Unreal Engine
Visual Studio 中添加 Unreal Engine 类、模块和插件
快速入门:Visual Studio Tools for Unreal Engine
在 Visual Studio 中查看 Unreal Engine 蓝图
在 Visual Studio 中查看 Unreal Engine 日志记录
在 Visual Studio 中查看 Unreal Engine 宏