# Работа с Asset в UE

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

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

```cpp
	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`- основная единица десериализации\сериализации любого ассета. По сути это Инфа о ассете, которая хранится на диске.&#x20;

```cpp
ObjectToLint->GetOutermost();

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

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