数据资产是一种资产,它可以在其类的实例中存储与特定系统相关的数据。
-
资产(Assets) 可以使用从UDataAsset继承的原生类在内容浏览器中创建。如果你需要数据继承或更复杂的层级,我们建议创建纯数据蓝图类。
-
从主数据资产继承可实现 主资产ID(Primary Asset Id) ,并具有资产包(Asset Bundle)支持,这样就可以手动将其从资产管理器加载和卸载。
-
原生子类的实例可以直接创建为虚幻编辑器中的数据资产,并将使用原生类的名称作为 PrimaryAssetType 。

在上图中,在编辑器中创建新数据资产时,系统将提示你从原生子类列表中选择
- 可以创建蓝图子类来添加变量,然后通过设置这些变量的纯数据蓝图再次生成子类。对于蓝图子类,我们建议使用纯数据蓝图而不是数据资产实例来处理数据继承并更新父类。
创建数据资产
要继承或创建你自己的 数据资产(Data Asset) ,请执行以下步骤:
-
找到 工具(Tools) > 新C++类(New C++ Class) ,然后基于 DataAsset 创建新类。
-
添加你的类数据成员。
USTRUCT() struct FMyAssetInfo { GENERATED_BODY() UPROPERTY(EditAnywhere) FString AssetName; UPROPERTY(EditAnywhere) UTexture2D* AssetThumbnail; UPROPERTY(EditAnywhere) UStaticMesh* AssetStaticMesh; }; UCLASS() class PROJECTExample_API UExampleDataAsset : public UDataAsset { GENERATED_BODY() UPROPERTY(EditAnywhere) TArray<FMyAssetInfo> AssetItems; };
-
编译你的项目。
-
在虚幻编辑器中,右键点击 内容浏览器(Content Browser) ,然后选择 杂项(Miscellaneous) > 数据资产(Data Asset) 。
-
系统提示你为数据资产实例选择你的类时,列表中应该会填充你的资产。
-
打开 数据资产蓝图(Data Asset Blueprint) ,观察成员变量。
使用属性说明符时,你可以观察资产中你的所有成员变量,以便设计师可以直接从编辑器修改数据。
主数据资产
主数据资产(Primary Data Asset) 是实现 GetPrimaryAssetId
函数的数据资产,并具有资产包(Asset Bundle)支持,这样就可以手动将其从资产管理器加载/卸载。
PrimaryAssetType 等于沿层级向上的第一个原生类或最高级别蓝图类的名称。例如,如果你有 UPrimaryDataAsset
-> UParentNativeClass
-> UChildNativeClass
-> DataOnlyBlueprintClass
,则类型将为 ChildNativeClass
。
或者,如果你有 UPrimaryDataAsset
-> ParentBlueprintClass
-> DataOnlyBlueprintClass
,则类型将为 ParentBlueprintClass
。
要更改此行为,你可以重载原生类中的 GetPrimaryAssetId
函数,或将这些函数复制到不同的原生基类中。
创建主数据资产
要继承或创建你自己的主数据资产,请执行以下步骤:
-
找到 工具(Tools) > 新C++类(New C++ Class) ,然后基于PrimaryDataAsset创建新类。
-
添加你的类成员并重载 GetPrimaryAssetID 函数。
UCLASS() class PROJECTExample_API UExampleDataAsset : public UPrimaryDataAsset { GENERATED_BODY() UPROPERTY(EditAnywhere) FString AssetName; UPROPERTY(EditAnywhere) UTexture2D* AssetThumbnail; UPROPERTY(EditAnywhere) UStaticMesh* AssetStaticMesh; GetPrimaryAssetId() const override { return FPrimaryAssetId("AssetItems", GetFName()); } };
加载和卸载资产
虚幻引擎(Unreal Engine) 会自动处理资产的加载和卸载,为开发者提供在每个资产都有需要时与引擎通信的方法。但是,你可能希望精确控制何时发现、加载和审核资产。对于这些情况,我们建议使用资产管理器。
异步资产加载
虚幻引擎简化了异步加载资产数据的过程。这些方法对于开发中以及设备上的烘焙数据作用完全一样,因此你不需要为了按需加载数据而维护两条代码路径。
请参阅异步资产加载文档以了解详情。