FARFilter可以在调用时提供AGetAssets()以创建按多个条件过滤的资产列表。过滤器由多个组件组成:

  • 包裹名字
  • 包路径
  • 收藏
  • 班级
  • 标签/值对

一个组件可能有多个元素。如果资产满足所有组件,则资产通过过滤器。为了满足一个组件,资产必须匹配其中的任何元素。

例如,如果存在路径为 /Game/Meshes/BeachBall 的 StaticMesh 资源:

  • 如果过滤器仅包含 PackagePath ,则资产将通过/Game/Meshes。只有一个组件具有一个元素。
  • 如果过滤器包含 PackagePath/Game/Meshes和 Classes UParticleSystem 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)