fc2ブログ

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

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

2023年04月 | ARCHIVE-SELECT | 2023年06月

| PAGE-SELECT |

≫ EDIT

UE5/UE4 C++で列挙型(Enum)を文字列(FText)や「Enum名」を含めた文字列(FString)に変換する(GetDisplayValueAsText、GetValueAsString)

C++で列挙型(Enum)を文字列(FText)や「Enum名」を含めた文字列(FString)に変換する方法です。

こちらを参考にさせていただきました。

・[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↑

| PAGE-SELECT |