前一段时间其实就做完了这个资源预加载的功能,仅仅是根据以往的经验完成的这项功能。最近稍微有一点时间,就把UE4资源加载和缓存的整体流程进行了分析,这样可以对整个UE4资源管理流程有更深入的了解,同时也让想了解这部分的小伙伴们节省些时间。
一、资源定义
1、想了解整个资源加载和缓存流程,首先就要了解UE4对资源是如何定义的。在文件夹中对应uasset,在内存中对应为UPackage。这两个名词大家应该都不陌生。game中我们具体使用的都不是他们,使用的其实是Texture2D、SkeletalMesh,也有可能是一个自定义的蓝图资源等等这些具体的资源类型。
2、在UE4中有一个Outer的概念,UPackage类似一个大的集合,他包含具体的UObject。 UPackage是具体UObject的Outer。要知道资源自身数据UObject的内容,必须先知道UPackage才可以。
3、UPackage序列化到本地之后就是uasset文件,uasset是本地的资源文件。包括如下:
File Summary 文件头信息
Name Table 包中对象的名字表
Import Table 存放被该包中对象引用的其它包中的对象信息(路径名和类型)
Export Table 该包中的对象信息(路径名和类型)
Export Objects 所有Export Table中对象的实际数据。
两个UPackage实例存在依赖关系,序列化到uasset文件的时候,这些依赖关系就存储为ImportTable。可以把ImportTable看做是这个资源所依赖的其他资源的列表&