UE5/UE4 C++で列挙型(Enum)の定義名から「UEnum」型を取得する(FindObject)
※UE5.1 以降ではこちらを参考にしてください。
・C++で列挙型(Enum)の定義名から「UEnum」型を取得する(UClass::TryFindTypeSlow、UE5.1以降)
http://kagring.blog.fc2.com/blog-entry-874.html
こちらを参考にさせていただきました。
・[UE4] C++ で enum の foreach を行う方法
https://qiita.com/jden/items/ab4eecb899ad6c0ede52
記事内でリンクが切れているページはおそらくこちらです。
・EnumToString Macro
https://unrealcommunity.wiki/enumtostring-macro-6ukt6cyz
列挙型(Enum)の定義名からUEnum 型を取得する具体的な方法は以下のようになるようです。
enum のタイプ名から FindObject で UEnum 型のObjetを取得し、そこから情報を取っているようで、これを参考にしました。
UEnum 型の公式ドキュメントはこちら。
・UEnum
https://docs.unrealengine.com/4.27/en-US/API/Runtime/CoreUObject/UObject/UEnum/
というわけでサンプルコードはこんな感じになりました。
まずは列挙型。
この列挙型から「UEnum」型の取得はこんな感じに。// サンプルの列挙型
UENUM(BlueprintType)
enum class EEnumSample : uint8
{
SampleNone = 0,
SampleOne = 1,
SampleTwo = 2,
};
// 列挙型の定義名
FString aEnumTypeString(TEXT("EEnumSample"));
// 列挙型の定義名から UEnum を取得
const TCHAR* aEnumChar = *aEnumTypeString;
UEnum* const aEnum = FindObject(ANY_PACKAGE, aEnumChar);
これ単体で使うことはあまりなさそうですが、
他の処理と組み合わせて使うことは多そうなので覚えておきたいところでですね。
| UE4 | 10:00 | comments:0 | trackbacks:0 | TOP↑