元となる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]