目录
程序之祖——HellowWorld
0.3.1 创建HellowWorld工程
0.3.2编译类型
0.3.3 平台支持
0.3.4 命名约定
程序之祖——HellowWorld
0.3.1 创建HellowWorld工程
接上文准备工作完成之后,双击运行Unreal Engine快捷图标,或者双击生成的UE4Editor.exe,新建工程,UE提供了多个类型的模板,我们这里选择第三人称视角。然后“下一步”。
选择自己需要保存的工程路径,填写工程名。最后创建工程。
工程结构和项目目录结构如下所示:
工程结构:
Config目录里带着3个最主要的配置文件,分别是DefaultEditor.ini,DefaultEngine.ini,DefaultGame.ini。代码方面自动生成了用于编译系统的3个.cs文件。
文件目录:
- Binaries:存放编译生成的结果二进制文件。该目录可以gitignore,反正每次都会生成。
- Config:配置文件。
- Content:平常最常用到,所有的资源和蓝图等都放在该目录里。
- DerivedDataCache:“DDC”,存储着引擎针对平台特化后的资源版本。比如同一个图片,针对不同的平台有不同的适合格式,这个时候就可以在不动原始的uasset的基础上,比较轻易的再生成不同格式资源版本。gitignore。
- Intermediate:中间文件(gitignore),存放着一些临时生成的文件。有:
- Build的中间文件,.obj和预编译头等
- UHT预处理生成的.generated.h/.cpp文件
- VS.vcxproj项目文件,可通过.uproject文件生成编译生成的Shader文件。
- AssetRegistryCache:Asset Registry系统的缓存文件,Asset Registry可以简单理解为一个索引了所有uasset资源头信息的注册表。CachedAssetRegistry.bin文件也是如此。
- Saved:存储自动保存文件,其他配置文件,日志文件,引擎崩溃日志,硬件信息,烘培信息数据等。
- Source:代码文件。
0.3.2编译类型
UE本身包含有两种编译类型,分别是网络模式和编辑器模式,也就是说在我们工程编译部署的时候会包含服务器(Server)端和客户端(Client),在我们日常的开发中,也会有Editor和Stand-alone之分。每种编译配置包含两种关键字。第一种表明了引擎以及游戏项目的状态。第二个关键字表明正在编译的目标。
官方解释如下:官方解释
自己测试验证后整理的各种模式解释如下:
状态 | Engine | Game | 解释 | |
Debug (调试) | Debug | Debug | 必须在编辑器上加-debug参数才能反射查看代码更改 | |
DebugGame(调试游戏) | Release | Debug | 适合只调试游戏代码 | |
Development(开发) | Release | Release | 允许编辑器反射查看代码更改 | |
Shipping (发行) | Release | Release | 无控制台命令,统计数据和性能分析 | |
Test (测试) | Release | Release | 启用了一些控制台命令,统计数据和性能分析 | |
编辑目标 | 解释 | |||
Game (游戏) | 此配置生成项目的独立可执行版本,但需要特定于平台的烘焙内容。请参阅打包项目参考页面以了解有关烘焙内容的更多信息。 | |||
Editor (编辑器) | 直接在编辑器中打开游戏项目 | |||
Client (客户端) | 多人联机项目,生成客户端版本 需提供《Game》Client.Target.cs文件 | |||
Server (服务器) | 多人联机项目,生成服务器版本 需提供《Game》Server.Target.cs文件 |
在Visual Studio 开发中,我们以在工具栏中设置生成配置。您可以按如下方式找到相关设置:
0.3.3 平台支持
UE4目前支持众多平台,包括Windows,Linux,IOS,Android等等,同时提供了供各个端(桌面端,浏览器端,移动端,AR,VR,MR)使用的配套插件。如下图所示:
因此UE为了方便你配置各个平台的参数和编译选项,简化编译流程,UE4实现了自己的一套编译系统。这套工具的编译流程结果,简单来说,就是你在VS里的运行,背后会运行UE4的一些命令行工具来完成编译,其他最重要的两个组件:
- UnrealBuildTool(UBT,C#):UE4的自定义工具,来编译UE4的逐个模块并处理依赖等。我们编写的Target.cs,Build.cs都是为这个工具服务的。
- UnrealHeaderTool (UHT,C++):UE4的C++代码解析生成工具,我们在代码里写的那些宏UCLASS等和#include "*.generated.h"都为UHT提供了信息来生成相应的C++反射代码。
一般来说,UBT会先调用UHT会先负责解析一遍C++代码,生成相应其他代码。然后开始调用平台特定的编译工具(VisualStudio,LLVM)来编译各个模块。最后启动Editor或者是Game。
0.3.4 命名约定
UE底层代码使用的是面向对象的C++语言,所以在很大程度上对C++开发者是友好的,同时,UE本身又有一套属于自己的命名约定,常见的命名约定如下:
- 模版类都以T作为前缀,比如TArray,TMap,TSet等
- UObject派生类都以U前缀
- AActor派生类都以A前缀
- SWidget派生类都以S前缀
- 抽象接口以I前缀
- 枚举以E开头
- bool变量以b前缀,如bPendingDestruction
- 其他的大部分以F开头,如FString,FName
- typedef的以原型名前缀为准,如typedef TArray
- 在编辑器里和C#里,类型名是去掉前缀过的
- UHT在工作的时候需要你提供正确的前缀
所以虽然说是UE自身的约定,但在开发中我们也必须遵守!!!
下篇:《LearnUE——基础指南:上篇—0》——UE架构