资源注册表
资源注册表是Editor的子系统,用来收集还没有加载进内存的资源信息。当然资源注册表本身是常驻在内存的,并且会自动跟随变化更新自己,因此当资源在内存/硬盘中被修改的时候,在引擎的Content Browser中就会表现出来。 借助资源注册表,引擎在创建资源列表的时候不用真正的把资源load进来。
获取资源列表
加载AssetRegistry然后Module.Get().GetAssetsByClass()
// 加载AssetRegistryFAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked("AssetRegistry");
TArray AssetData;
AssetRegistryModule.Get().GetAssetsByClass(UStaticMesh::StaticClass(), AssetData);
// 除了GetAssetsByClass, 还有: (顾名思义,不解释了)// GetAssetsByPackageName()// GetAssetsByPath()// GetAssetsByObjectPath()// GetAssetsByTagValues()// GetAllAsset() 速度可能比较慢
// 返回的AssetData里有已加载和未加载的资源// FAssetData重要属性有// FName: AssetClass, AssetName, ObjectPath, PackageName, PackagePath// FAssetDataTagMapSharedView: TagsAndValues
FAssetData到UObject*
FAssetData::GetAsset()即可获取AssetData中的UObject* (没有加载