INTSourceChangelist:3011129 Availability:Public Title: 编译游戏项目 Crumbs: %ROOT%, Programming, Programming/Development Description: 使用 Windows 的 Visual Studio 或 Mac 的 Xcode 编译单独的游戏项目。 [TOC (start:2 end:3)] [EXCERPT:Main] 虚幻引擎通过 UnrealBuildTool 来使用自定义编译方式,而此工具会处理编译项目的所有复杂的方面并将其与引擎进行链接。该过程的发生是透明的,这样您就可以直接通过标准 Visual Studio 编译工作流程来编译项目。 UnrealBuildTool使用 `*.Build.cs` 和 `*.Target.cs` 文件来编译游戏项目。当项目使用C++模板来创建,或当使用 [](Programming\Development\ManagingGameCode\CppClassWizard) 来添加代码到一个仅使用蓝图的模板中创建的项目时,它们会被自动生成。 ## 编译配置 虚幻引擎 4 和 UnrealBuildTool 使用不同的版本配置来决定引擎如何被编译。使用何种配置将会由您创建版本的目的来决定。 [EXCERPT:winbuildconfig] 每种编译配置包含两种关键字。第一种表明了引擎以及游戏项目的状态。比如,如果使用 **Debug** 配置来进行编译,将可以调试游戏代码。第二个关键字表明正在编译的对象。如果想要在 Unreal 中打开一个项目,需要采用 **Editor** 对象关键字来编译。 |编译配置 - 状态 | 描述 | |-------------|-------------| | **Debug** (调试)| 该配置在调试模式中同时编译引擎和游戏代码。| | **DebugGame** (调试游戏)| 该配置按最优方式编译引擎,但游戏代码可被调试。此配置对于仅使用调试的游戏模块是非常有用的。| | **Development** (开发)| 该配置等同于发布。引擎和游戏代码都将在此配置中被编译。| | **Shipping** (发行)|该配置在设置后可达到最佳性能并能发行您的游戏。此配置剥离了控制台命令行,统计数据和分析工具。| | **Test** (测试)| 该配置就是启用了一些控制台命令,统计数据和分析工具后的 **Shipping** (发行)配置。| |编译配置 - 对象 | 描述 | | ------------------| ----------| | [empty] (空白) | 该配置编译了您项目的一个独立可执行版本,但需要平台特定的已烘焙内容。 | | **Editor** (编辑器)| 为能在虚幻编辑器内打开项目并查看所有变更的代码,该项目必须在 **Editor** (编辑器)配置内进行编译。| | **Client** (客户端)| 如存在 `Client.Target.cs` 文件,则 **Client** (客户端)编译配置将可用。 | | **Server** (服务器)| 如存在 `Server.Target.cs` 文件,则 **Server** (服务器)编译配置将可用。| [/EXCERPT:winbuildconfig] [/EXCERPT:Main] [EXCERPT:VS] ## 使用 Visual Studio 编译 编译配置可在 Visual Studio 工具条中进行设置。 ### 设置编译配置 ![Project - Configuration Menu](rocket_configuration_menu.png) [COMMENT:none] ### Solution - Configuration Menu ![UE4 Solution - Configuration Menu](configuration_menu.png) [/COMMENT] ### 设置解决方案平台 编译配置可在 Visual Studio 工具条中进行设置。 [COMMENT:none] 虚幻引擎当前支持以下平台: * **Windows 64位** ![Project - Platform Menu](rocket_platform_menu.png) ![UE4 Solution - Platform Menu](platform_menu.png) [/COMMENT] 虚幻引擎 4 当前支持以下平台: * **Windows 32位** * **Windows 64位** 在使用虚幻引擎 4 工作时,一般您都会使用 **Win64** 平台。这是生成项目文件时唯一默认包含的文件; [](Programming/UnrealBuildSystem/ProjectFileGenerator) 页面有在其它平台生成项目文件的指示。 ### 编译项目 [REGION:note] 在继续前请确认您安装的是 Windows 平台的 Visual Studio 2013 专业版或 Visual Studio 2013 高级版。如果您使用的是 Mac,请确认您已经安装了 Xcode。 [/REGION] [COMMENT:none] [REGION:tip] 当您在 Visual Studio 中编译时,您实际上仅仅在编译游戏项目,而不是 Unreal 编辑器。 [/REGION] [REGION:tip] 当您在 Visual Studio 中编译时,您编译的不仅是引擎,还有游戏项目。 [/REGION] 1. 设置 **Solution Configuration** (解决方案配置文件)为您想要编译的配置。在本示例中,它被设置为 **Development Editor** (开发编辑器)。请参照 [编译配置](#编译配置) 章节以获得每个可用配置的描述。 ![Project - Set Configuration to Development](config_development_menu.png) 1. **右键点击** 您的游戏项目并选择 **Rebuild** (重新编译)以进行重新编译。 ![](rebuild_project_rocket.png) [/COMMENT] 1. 设置 **Solution Configuration** (解决方案配置文件)为您想要编译的配置。在本示例中,它被设置为 **Development** (开发)。请参照 [编译配置](#编译配置) 章节以获得每个可用配置的描述。 ![](rocket_config_development_menu.png) 1. **右键点击** 您的游戏项目并选择 **Rebuild** (重新编译)以进行重新编译。 ![](rebuild_project_outside.png) 您现在可以使用编译项目来 [运行引擎](GettingStarted/RunningUnrealEngine)。 [EXCERPT:MatchEXE] [REGION:note] 在运行引擎时,很重要的一点是使用虚幻引擎可执行文件来匹配您重建项目所用的编译配置。例如,如果您使用 **DebugGame Uncooked** 编译配置来编译项目,您可以将游戏信息作为 `UE4-Win64-DebugGame.exe` 可执行文件的参数来运行。更多关于二进制命名规则的信息可以在[编译虚幻引擎](Programming/Development/BuildingUnrealEngine) 页面找到。 [/REGION:note] [REGION:note] 在运行 Unreal 时,如果您在任意 **Uncooked** (未烘焙)配置下重建您的项目,很重要的一点是添加`-game`标识,如果您在任意 **Debug** (调试)配置下重建您的项目,很重要的一点是添加`-debug`标识。 [/REGION:note] [/EXCERPT:MatchEXE] ### Visual Studio 已知问题 | 问题 | 解决方案 | | ----- | -------- | | "项目过期"信息总是出现 | 当项目已经是最新时,Visual Studio 仍认为该项目过期。您可以方便地通过勾选 **不再显示该对话框** 选框并按下 **No(不)** 按钮来禁止该信息。| | 当使用 Debug(调试) 配置时出现 **无调试信息** 窗口 | 产生的原因是 UE4editor.exe 是通过 _Development_ (开发)配置来进行编译的。尽管有这个警告,但当您使用 _Debug_(调试)配置来编译该游戏项目时仍然可以对其进行调试。您可以方便地通过勾选 **不再显示该对话框** 选框并按下 **Yes(是)** 按钮来禁止该信息。| [/EXCERPT:VS] [EXCERPT:Xcode] ## 使用 Xcode 来编译 [REGION:tip] 当您使用 Xcode 来编译时,您实际上仅仅在编译游戏项目,而不是编辑器。 [/REGION] **如需编译项目:** 当您使用 Xcode 的 **Product > Build** (产品>编译)选项时,虚幻引擎 Xcode 项目被配置为 Debug(调试)的编译配置,当您使用 Xcode 的 **Product > Build For > Profiling** (产品>编译>分析器)选项时,虚幻引擎 Xcode 项目被配置为 Development(开发)的编译配置。您可以通过编辑目标计划来编辑此操作。 您现在可以使用编译项目来 [运行引擎](GettingStarted/RunningUnrealEngine)。 [EXCERPT:MatchDMG] [REGION:note] 在运行二进制编辑器时,如果您在任意 **Uncooked** (未烘焙)配置下重建您的项目,很重要的一点是添加 `-game` 标识,如果您在任意 **Debug** (调试)配置下重建您的项目,很重要的一点是添加 `-debug` 标识。 [/REGION:note] [/EXCERPT:MatchDMG] ### Xcode 的已知问题 | 问题 | 解决方案 | | ----- | -------- | | Xcode 未在断点处停止 | [INCLUDE:#XcodeDebug] | [COMMENT:none] [EXCERPT:XcodeDebug] Xcode的LLDB调试器需要被配置,以正确处理虚幻引擎项目的断点。您需要在主文件夹中创建(或编辑,如果您已有该文件的话).lldbinit文件,并添加以下行: settings set target.inline-breakpoint-strategy always [/EXCERPT:XcodeDebug] [/COMMENT] [/EXCERPT:Xcode] [COMMENT:none] The following was deprecated per LaurenR 29.7.15 | **Uncooked** | Projects built using configurations that have an **Uncooked** type should be opened in Unreal Editor with the "-game" flag. This runs your game with uncooked content, in a new window, and is equivalent to **Play in > New Window at Default Player Start** in the editor. | [/COMMENT]