资源束(Asset Bundle) 是与主资源相关特定资源的命名列表。用"AssetBundles"元标签对 UObject
的 TAssetPtr
或 FStringAssetReference
成员的 UPROPERTY
代码段进行标记即可创建资源束。标签的数值将显示保存次资源的束的命名。举例而言,以下保存在 MeshPtr
成员变量中的静态网格体资源在 UObject 被保存时将被添加到名为"TestBundle"的资源束
使用资源束的第二种方式是用项目的资源管理器类在运行时将其注册。在此情况下,程序员需要编写代码填入 FAssetBudleData
结构,然后将结构传至资源管理器的 AddDynamicAsset
函数,并使主资源 ID 与束中的次资源关联起来。
从硬盘注册并加载主资源
多数主资源均在 Content Browser 中,并作为资源文件保存在硬盘上,以便美术师或设计师进行编辑。程序员创建可以此法使用的类的最简单方式是从 UPrimaryDataAsset
继承,它是 UDataAsset
的一个版本,拥有加载和保存内置资源束数据的功能。如需要不同的基类,如 APawn
,UPrimaryDataAsset
可用作一个最小范例,代表使资源束能够用于类的必备元素。以下类在 Fortnite 中保存区域主题数据,在游戏的地图选择模式中构建区域的演示时,这些数据能够告知游戏使用何种美术资源
注册并加载动态创建的主资源
主资源束也可在运行时动态注册和加载。有两个资源管理器函数可用于理解此操作: