UE4 C++ でリファレンスからアセットをロードする方法
結論
UEditorAssetLibrary::LoadAsset(AssetReference) でロードできます。
参考: UEditorAssetLibrary::LoadAsset | Unreal Engine Documentation
手順
モジュールを追加する
以下のようにモジュールを追加してください。
モジュールを追加した後は、エクスプローラーで ProjectName.uproject を右クリックして [Generate Visual Studio project files] でソリューションを再生成する必要があります。
// ProjectName.Build.cs // "EditorScriptingUtilities" モジュールを追加する PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EditorScriptingUtilities" });
ヘッダーを追加する
*.h でも *.cpp でもいい気がします。
わたしは *.h に全部入れることにしています。
ClassName.generated.h がいちばん最後のヘッダーファイルになるようには気を付けましょう。
// ClassName.h #include "EditorAssetLibrary.h"
アセットをロードする
今回はスケルタルメッシュですが、任意の型を入れられると思います。
ちなみにリファレンスは、UE4 を立ち上げる → アセットを右クリック → [リファレンスをコピー] で取得できます。
// MyClass.cpp FString AssetPath = FString(TEXT("SkeletalMesh'/Game/Mannequin/Character/Mesh/SK_Mannequin.SK_Mannequin'")); USkeletalMesh *SkeletalMesh = static_cast<USkeletalMesh*>(UEditorAssetLibrary::LoadAsset(AssetPath)); // 確認 UE_LOG(LogTemp, Log, TEXT("%s"), *(SkeletalMesh->GetName()));