Работа с Asset в UE

Референсы ассета

Каждый ассет использует какие-либо другие ассеты и сам является используемым. Если необходимо получить данные об этом - существует следующий код:

	auto& assetRegistry = FModuleManager::LoadModuleChecked<FAssetRegistryModule>("AssetRegistry").Get();
	TArray<FAssetDependency> linksToAsset;
	assetRegistry.GetDependencies({ ObjectToLint->GetOutermost()->GetFName() },
	                              linksToAsset,
	                              UE::AssetRegistry::EDependencyCategory::Package,
	                              UE::AssetRegistry::EDependencyQuery::NoRequirements);
	
	//{ ObjectToLint->GetOutermost()->GetFName() } - важно именно так давать ассет

GetDependencies- аcсеты которые проверяемый ассет использует.

GetReferencers- ассеты которые используют проверяемый ассет.

Получение UPackage ассета

UPackage- основная единица десериализации\сериализации любого ассета. По сути это Инфа о ассете, которая хранится на диске.

ObjectToLint->GetOutermost();

	TArray<FReferencerInformation> OutInternalReferencers;
	TArray<FReferencerInformation> OutExternalReferencers;
	ObjectToLint->GetOutermost()->RetrieveReferencers(&OutInternalReferencers, &OutExternalReferencers);

Через это так же можно получить, например, ссылки на ассет. Но увы они буду валидны лишь в рантайме. Т.е как только новая ссылка появится - она будет выводиться. Но после перезагрузки проекта - нет.

Last updated

Was this helpful?