前言
UE4引擎通过editor来创建和管理uasset,但是当游戏发布到不同的平台时需要根据平台转换为不同的格式。而这样的转换过程就叫作烘焙。
分为三个步骤
-
加载包至内存;
-
为包中的每个对象生成目标平台特定数据 (Derived Data);
-
把含有平台特定数据的包另存到cooked目录
Loading Package
类似于DLL中的导入、导出符号表,Unreal的Package也有一个导入(import)、导出(export)表。
Import表示其依赖的在其他包中的对象
Export记录了对其依赖的其他包中的对象。
当Unreal对一个包进行装载的时候,还需要载入依赖树上的所有包。我们也把这种依赖称为强引用(Hard Dependency)。
也有一些依赖的对象不需要提前载入,我们把这种对象称为弱引用(Soft Dependencies)。软依赖的对象可以后期通过在代码中手动载入。
Derived Data Cache
有的对象比如Texture在不同的平台上有不同的压缩格式,因此在烘培的过程中,需要针对特定的平台生成特定的数据,这种数据被称为"Derived Data"。又因为生成"Derived Data"的过程通常需要比较长的时间,Unreal引入了特定数据缓存(Derived Data Cache)。
Derived Data Cache就是一个在工作室中共享的资源仓库,其中保存了各种版本的资源文件在不同平台上对应的Derived Data。这样当工作室有同事进行烘培的时候,Unreal会去设置的Derived Data Cache中去找是否有人已经生成过该文件了,如果没有的话再生成该文件,这样就减少了重复生成的过