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使用不同的版本配置来决定引擎如何被编译。使用何种配置将会由您创建版本的目的来决定。 [PUBLISH:Rocket] 每种编译配置包含两种关键字。第一种表明了引擎以及您游戏项目的状态。比如,如果您使用 **Debug** 配置来进行编译,您将可以调试游戏代码。第二个关键字表明您正在编译的对象。如果您想要在Unreal中打开一个项目,您需要采用 **Editor** (编辑器)对象关键字来编译,但如果您正在编译您的游戏的可执行版本,您需要使用 **empty** (空白)对象关键字来进行编译。 |编译配置 - 状态 | 描述 | |-------------|-------------| | **Debug** (调试) | 该配置包含了调试所需的符号。如果您使用 **Debug** (调试)配置来编译项目并且想要使用Unreal编辑器来打开项目,您必须使用"-debug"标识以查看您项目中的代码变更。| | **Development** (开发)| 该配置等同于发布。为让您在稍后从Unreal编辑器中打开项目时能看到您项目的代码变化,您必须在 **Development** (开发)配置中进行编译。| | **Shipping** (发行)|该配置在设置后可达到最佳性能并能发行您的游戏。此配置剥离了控制台命令行,统计数据和分析工具。| |编译配置 - 对象 | 描述 | | ------------------| ----------| | [empty] (空白) | 该配置编译了您项目的一个独立可执行版本,但需要平台特定的已烘焙内容。 | | **Editor** (编辑器)| 为能在虚幻编辑器内打开项目并查看所有变更的代码,该项目必须在 **Editor** (编辑器)配置内进行编译。| | **Uncooked** (未烘焙) | 使用 **Uncooked** (未烘焙)类型的配置来编译的项目应在虚幻编辑器内通过"-game"标识来打开。这种情况下,会在新窗口中使用未烘焙的内容来运行游戏,等同于在编辑器内点击 **Play in (游玩)> New Window at Default Player Start(在默认玩家起始处新建窗口)** 。 | [/PUBLISH:Rocket] [PUBLISH:Licensee] 每种编译配置包含两种关键字。第一种表明了引擎以及您游戏项目的状态。比如,如果您使用 **DebugGame** 配置来进行编译,您将可以调试游戏代码,但无法调试引擎代码。第二个关键字表明您正在编译的对象。如果您想要在虚幻编辑器中打开一个项目,您需要采用 **Editor** (编辑器)对象关键字来编译,但如果您正在编译服务器上可运行项目的可执行版本,您需要使用 **Server** (服务器)对象关键字来进行编译。 |编译配置 - 状态 | 描述 | |-------------|-------------| | **Debug** (调试)| 该配置在调试模式中同时编译引擎和游戏代码。| | **DebugGame** (调试游戏)| 该配置按最优方式编译引擎,但游戏代码可被调试。此配置对于仅使用调试的游戏模块是非常有用的。| | **Development** (开发)| 该配置等同于发布。引擎和游戏代码都将在此配置中被编译。| | **Shipping** (发行)|该配置在设置后可达到最佳性能并能发行您的游戏。此配置剥离了控制台命令行,统计数据和分析工具。| | **Test** (测试)| 该配置就是启用了一些控制台命令,统计数据和分析工具后的 **Shipping** (发行)配置。| |编译配置 - 对象 | 描述 | | ------------------| ----------| | [empty] (空白) | 该配置编译了您项目的一个独立可执行版本,但需要平台特定的已烘焙内容。 | | **Client** (客户端)| 如存在`Client.Target.cs`文件,则 **Client** (客户端)编译配置将可用。 | | **Editor** (编辑器)| 为能在虚幻编辑器内打开项目并查看所有变更的代码,该项目必须在 **Editor** (编辑器)配置内进行编译。| | **Server** (服务器)| 如存在`Server.Target.cs`文件,则 **Server** (服务器)编译配置将可用。| | **Uncooked** (未烘焙) | 使用 **Uncooked** (未烘焙)类型的配置来编译的项目应在虚幻编辑器内通过"-game"标识来打开。这种情况下,会在新窗口中使用未烘焙的内容来运行游戏,等同于在编辑器内点击 **Play in (游玩)> New Window at Default Player Start(在默认玩家起始处新建窗口)** 。 | [/PUBLISH:Licensee] [/EXCERPT:Main] [EXCERPT:VS] ## 使用Visual Studio编译 ### 设置编译配置 编译配置可在Visual Studio工具条中进行设置。 [PUBLISH:Rocket] ![Project - Configuration Menu](rocket_configuration_menu.png) [/PUBLISH:Rocket] [PUBLISH:Licensee] ![UE4 Solution - Configuration Menu](configuration_menu.png) [/PUBLISH:Licensee] ### 设置解决方案平台 [PUBLISH:Rocket] 虚幻引擎当前支持以下平台: * **Windows 64位** ![Project - Platform Menu](rocket_platform_menu.png) [/PUBLISH:Rocket] [PUBLISH:Licensee] 虚幻引擎4当前支持以下平台: * **Windows 32位** * **Windows 64位** 在使用虚幻引擎4工作时,一般您都会使用 **Win64** 平台。这是生成项目文件时唯一默认包含的文件;[](Programming/UnrealBuildSystem/ProjectFileGenerator)页面有在其它平台生成项目文件的指示。 ![UE4 Solution - Platform Menu](platform_menu.png) [/PUBLISH:Licensee] ### 编译项目 [PUBLISH:Rocket] [REGION:note] 在继续前请确认您安装的是Windows平台的Visual Studio 2013专业版或Visual Studio2013高级版。如果您使用的是Mac,请确认您已经安装了Xcode。 [/REGION] [REGION:tip] 当您在Visual Studio中编译时,您实际上仅仅在编译游戏项目,而不是Unreal编辑器。 [/REGION] [/PUBLISH:Rocket] [PUBLISH:Licensee] [REGION:tip] 当您在Visual Studio中编译时,您编译的不仅是引擎,还有游戏项目。 [/REGION] [/PUBLISH:Licensee] **如需编译项目:** [PUBLISH:Licensee] 1. 设置 **Solution Configuration** (解决方案配置文件)为您想要编译的配置。在本示例中,它被设置为 **Development Editor** (开发编辑器)。请参照 [编译配置](#编译配置) 章节以获得每个可用配置的描述。 ![Project - Set Configuration to Development](config_development_menu.png) 1. **右键点击** 您的游戏项目并选择 **Rebuild** (重新编译)以进行重新编译。 ![](rebuild_project_outside.png) [/PUBLISH:Licensee] [PUBLISH:Rocket] 1. 设置 **Solution Configuration** (解决方案配置文件)为您想要编译的配置。在本示例中,它被设置为 **Development** (开发)。请参照 [编译配置](#编译配置) 章节以获得每个可用配置的描述。 ![](rocket_config_development_menu.png) 1. **右键点击** 您的游戏项目并选择 **Rebuild** (重新编译)以进行重新编译。 ![](rebuild_project_rocket.png) [/PUBLISH:Rocket] 您现在可以使用编译项目来[运行引擎](GettingStarted/RunningUnrealEngine)。 [EXCERPT:MatchEXE] [PUBLISH:Licensee] [REGION:note] 在运行引擎时,很重要的一点是使用虚幻引擎可执行文件来匹配您重建项目所用的编译配置。例如,如果您使用 **DebugGame Uncooked** 编译配置来编译项目,您可以将游戏信息作为`UE4-Win64-DebugGame.exe`可执行文件的参数来运行。更多关于二进制命名规则的信息可以在[编译虚幻引擎](Programming/Development/BuildingUnrealEngine) 页面找到。 [/REGION:note] [/PUBLISH:Licensee] [PUBLISH:Rocket] [REGION:note] 在运行Unreal时,如果您在任意 **Uncooked** (未烘焙)配置下重建您的项目,很重要的一点是添加`-game`标识,如果您在任意 **Debug** (调试)配置下重建您的项目,很重要的一点是添加`-debug`标识。 [/REGION:note] [/PUBLISH:Rocket] [/EXCERPT:MatchEXE] [PUBLISH:Rocket] ### Visual Studio已知问题 | 问题 | 解决方案 | | ----- | -------- | | "项目过期"信息总是出现 | 当项目已经是最新时,Visual Studio仍认为该项目过期。您可以方便地通过勾选 **不再显示该对话框** 选框并按下 **No(不)** 按钮来禁止该信息。| | 当使用 Debug(调试) 配置时出现 **无调试信息** 窗口 | 产生的原因是UE4editor.exe是通过 _Development_ (开发)配置来进行编译的。尽管有这个警告,但当您使用 _ Debug_ (调试) 配置来编译该游戏项目时仍然可以对其进行调试。您可以方便地通过勾选 **不再显示该对话框** 选框并按下 **Yes(是)** 按钮来禁止该信息。| [/PUBLISH:Rocket] [/EXCERPT:VS] [EXCERPT:Xcode] [PUBLISH:Rocket] ## 使用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] | [/PUBLISH:Rocket] [/EXCERPT:Xcode]