FARFilter
可以在调用时提供AGetAssets()
以创建按多个条件过滤的资产列表。过滤器由多个组件组成:
- 包裹名字
- 包路径
- 收藏
- 班级
- 标签/值对
一个组件可能有多个元素。如果资产满足所有组件,则资产通过过滤器。为了满足一个组件,资产必须匹配其中的任何元素。
例如,如果存在路径为 /Game/Meshes/BeachBall 的 StaticMesh 资源:
- 如果过滤器仅包含 PackagePath ,则资产将通过
/Game/Meshes
。只有一个组件具有一个元素。 - 如果过滤器包含 PackagePath
/Game/Meshes
和 ClassesUParticleSystem
AND , 则资产将通过UStaticMesh
。有两个组件,第一个有一个元素,第二个有两个。 - 如果过滤器包含 PackagePath
/Game/Meshes
且仅包含 Class ,则资产将失败UParticleSystem
。有两个组件,每个组件都有一个元素。 - 如果过滤器包含 PackagePath
/Game/NotMeshes
和 Class ,则资产将失败UStaticMesh
。此过滤器还使用两个组件,每个组件都有一个元素。
使用具有两个组件 Class 和 PackagePath 的过滤器的示例:
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>("AssetRegistry");
TArray<FAssetData> AssetData;
FARFilter Filter;
Filter.Classes.Add(UStaticMesh::StaticClass());
Filter.PackagePaths.Add("/Game/Meshes");
AssetRegistryModule.Get().GetAssets(Filter, AssetData);
【UE4】加载资源的方式(七)使用AssetManager进行加载 - 多思考多实践同等重要 - 博客园 (cnblogs.com)