fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE5/UE4 C++で列挙型(Enum)の定義名から「UEnum」型を取得する(FindObject)

C++で列挙型(Enum)の定義名から「UEnum」型を取得する方法です。

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(BlueprintType)
enum class EEnumSample : uint8
{
  SampleNone = 0,
  SampleOne = 1,
  SampleTwo = 2,
};

この列挙型から「UEnum」型の取得はこんな感じに。

// 列挙型の定義名
FString  aEnumTypeString(TEXT("EEnumSample"));

// 列挙型の定義名から UEnum を取得
const TCHAR*  aEnumChar = *aEnumTypeString;
UEnum* const  aEnum = FindObject(ANY_PACKAGE, aEnumChar);


これ単体で使うことはあまりなさそうですが、
他の処理と組み合わせて使うことは多そうなので覚えておきたいところでですね。

| UE4 | 10:00 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/652-a02ed7e2

TRACKBACK

PREV | PAGE-SELECT | NEXT