PrimaryAssetのキャッシュ

元となるPrimaryAssetを用意し,

PrimaryAssetを複製、jsonのデータから,複製したPrimaryAssetをリネームして

新規PrimaryAssetを作成するものを作りました。

<br/>

その後、PIEして

UAssetManager& AssetManager = UAssetManager::Get();

AssetManager.UpdateManagementDatabase();

<br/>

FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(“AssetRegistry”);

IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();

AssetRegistry.ScanPathsSynchronous({ “/Game/” }, true);

<br/>

等を行い、更新して新規作成したPrimaryAssetを取得できるようにしようとしているのですが、

<br/>

<br/>

TArray<FAssetData> AssetDataList;

AssetRegistry.GetAssetsByPath(FName(“/Game”), AssetDataList, true);

<br/>

for (const FAssetData& AssetData : AssetDataList)

{

UE\_LOG(LogTemp, Log, TEXT("Found Asset: %s"), \*AssetData.AssetName.ToString());

}

<br/>

で新規作成したPrimaryAssetは存在を確認できているけれど、

<br/>

TArray<FPrimaryAssetId> PrimaryAssetIds;

AssetManager.GetPrimaryAssetIdList(FPrimaryAssetType(TEXT(“Test”)), PrimaryAssetIds);

<br/>

for (const FPrimaryAssetId& AssetId : PrimaryAssetIds)

{

UE\_LOG(LogTemp, Log, TEXT("Primary Asset ID: %s"), \*AssetId.ToString());

}

<br/>

では登録されていません。

<br/>

TArray<FAssetData> AssetDataList;

AssetRegistry.GetAssetsByPath(FName(“/Game”), AssetDataList, true);

<br/>

for (const FAssetData& AssetData : AssetDataList)

{

FPrimaryAssetId AssetId \= AssetManager.GetPrimaryAssetIdForPath(AssetData.ObjectPath.ToString());

if (AssetId.IsValid())

{

  UE\_LOG(LogTemp, Log, TEXT("Asset %s is registered as Primary Asset: %s"), \*AssetData.AssetName.ToString(), \*AssetId.ToString());

}

else

{

  UE\_LOG(LogTemp, Warning, TEXT("Asset %s is NOT registered as a Primary Asset"), \*AssetData.AssetName.ToString());

}

}

<br/>

をするとAssetIdに中身が入っていないことを確認できています。

<br/>

エディタを再起動すると、中身が入って取得できることが確認できていますが、

エディタを閉じずにAssetIdに中身が入るようにする方法はありますか?

<br/>

<br/>

<br/>

<br/>

[Attachment Removed]

お世話になっております。

UAssetManager::RefreshPrimaryAssetDirectory 関数によって PrimaryAsset のリストを更新できます。

	UAssetManager& AssetManager = UAssetManager::Get();
	AssetManager.RefreshPrimaryAssetDirectory(true);

のようにしてお試し下さい。

よろしくお願いいたします。

[Attachment Removed]

お世話になっております

無事更新できました!

教えていただきありがとうございます

[Attachment Removed]

ご確認ありがとうございます。

本件はクローズいたします。

また何かありましたらお問い合わせ下さい。

[Attachment Removed]