导语
想知道从C++代码/蓝图脚本/资产到打包成可执行程序,UE都帮我们干了些什么吗?
版本:UE4.21
基本名词解释
ps:受限于当前的知识水平,难免产生理解错误,后期会继续完善修正。
UHT (UnrealHeaderTool )
我粗浅的理解就是UE自己的代码预处理器(相对于C++ 的预处理过程),UHT对代码文件内容进行处理,生成 .generated.h/.gen.cpp 文件,加入反射信息,适配UObject,在以便在在运行时能获取和使用这些数据。
生成的文件在 \Intermediate\Build\Win64\UE4Editor\Inc\YourProject 目录下。
UObject提供了 元数据、反射数据、GC垃圾回收、序列化
UBT (UnrealBuildTool)
UnrealBuildTool (UBT)管理在各种不同的构建配置下构建UE4源代码的过程;
UBT 程序源代码在Engine\Source\Programs\UnrealBuildTool 目录下;
UBT 的配置项在 UnrealBuildTool\Configuration\BuildConfiguration.cs 文件中。
UAT (AutomotionTool)
UnrealBuildTool (UBT)管理在各种不同的构建配置下构建UE4源代码的过程;
UBT 程序源代码在Engine\Source\Programs\UnrealBuildTool 目录下;
UBT 的配置项在 UnrealBuildTool\Configuration\BuildConfiguration.cs 文件中。
Build 构建
这里说的不是 UE 编辑器上Build按钮,那主要是负责提前计算场景中光照数据、物体可见性、导航网格等。
我们说的是源代码source code 的构建。
首先我们执行编辑器的 File->Refresh Visual Studio Project,在输出日志中我们会看到如下信息:
(此操作等同在 xxx.uproject 上右击 Generate visual studio project files, ps:必须是C++ 项目)
1 | Running .../UnrealEngine/Engine/Binaries/DotNET/UnrealBuildTool.exe -projectfiles -project=".../MyProject.uproject" -game -engine -progress |
我们看到UBT(UnrealBuildTool)这个程序开始执行了。
Complie 编译
在VS等IDE 中执行编译, UE 引擎也提供了热编译功能(在不关闭引擎的情况下,对修改的c++代码进行重新编译) 。
这个过程就是编译C++ 代码,生成Binaries二进制文件。
Cook 烘焙
1 | UATHelper: Cooking (Windows (64-bit)): Running AutomationTool... |
1 | LogUObjectHash: Compacting FUObjectHashTables data took 0.52ms |
1 | LogPlayLevel: Completed Launch On Stage: Cooking in the editor, Time: 5.859237 |
未完待续。。。