UE5/UE4 C++で列挙型(Enum)を文字列(FText)や「Enum名」を含めた文字列(FString)に変換する(GetDisplayValueAsText、GetValueAsString)
こちらを参考にさせていただきました。
・[C++] EnumをString化する
https://zenn.dev/aziogroup/scraps/5326994431719e#comment-3be3d2d8f2fa82
「StaticEnum< Enum名>()->GetDisplayValueAsText(定義名)」で定義名のみを取得。
StaticEnum< Enum名>()->GetValueAsString(定義名)」でEnum名を含めた定義名を取得できるようです。
実際にやってみました。
まずはこんな感じで「Enum」を用意しました。
UENUM(BlueprintType)
enum class EBlogEnum : uint8
{
One = 0,
Two,
Three,
Count,};
上記「Enum」の定義を文字列に変換してみました。
// Enum を文字列に変換
// Enum名は含めない : Override Root Scale
FText aEnumText = StaticEnum< EBlogEnum>()->GetDisplayValueAsText(EBlogEnum::One);
UE_LOG(LogTemp, Log, TEXT("EnumText = %s"), (*aEnumText.ToString()));
// Enum名を含める : ESpawnActorScaleMethod::OverrideRootScale
FString aEnumString = StaticEnum< EBlogEnum>()->GetValueAsString(EBlogEnum::Three);
UE_LOG(LogTemp, Log, TEXT("EnumString = %s"), (*aEnumString));
結果はこんな感じになります。
LogTemp: EnumText = One
LogTemp: EnumString = EBlogEnum::Three
こういった機能は便利なので覚えておきたいですね。
デバッグ機能としても優秀だと思います。
こちらに別の方法もありますので一応メモしておきます。
・C++で列挙型(Enum)を文字列(FString、標準文字列)に変換する(GetNameStringByIndex)
http://kagring.blog.fc2.com/blog-entry-651.html
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑