アンリアる! C++入門編 ~対話形式で学ぶUnreal Engine~
BOOTHでUnreal Engine C++入門書を販売していますUnreal Engine上でC++を使って開発するために必要となる基礎知識を一冊の本にまとめた本です。 対話形式によるわかりやすい説明を目指しました。無料の試し読みも可能ですので、ぜひ読んでみてください!
[UE5] C++ 列挙型(Enumeration)の実装方法

※一部画像は異なりますが、本記事の内容はUE4にも適用できます。

本記事では、Unreal Engineで、C++で列挙型(Enumeration)を実装する方法について説明します。

※Unreal EngineでC++を使うためには、C++の導入(環境構築・プロジェクト設定)が必要です。
 導入していない場合は、以下の記事を参考にしてください。

[UE5] C++の導入方法
本記事では、Unreal EngineでC++を導入する方法と、C++ヘッダファイル・ソースファイル(C++クラス)を追加する方法を説明します。

列挙型の実装

C++での実装

C++で列挙型を実装するためには、まずヘッダファイルを追加する必要があります。
ヘッダファイルの追加方法がわからない方は、以下の記事を参照してください。
なお、列挙型はエディタ上から作成できないため、エクスプローラ上で追加する必要があります(以下の記事の方法②)。

[UE5] C++ファイル(クラス)の追加・削除方法
Unreal EngineではC++のファイル・クラスの追加・削除に一工夫必要です。 本記事では、Unreal EngineでC++ヘッダファイル・ソースファイル(C++クラス)を追加・削除する方法を説明します。

ヘッダファイルを追加したら、列挙型を実装するためのソースコードを記述します
以下のソースコードを記述します。
列挙型名の頭に「E」を付ける決まりになっています。
この例では、「EMyEnum」という列挙型名としています。
なお、列挙子の記述方法については後で説明しますが、列挙子を1つも記述していないとコンパイルエラーになります。

【ヘッダファイル(MyEnum.h)】

#pragma once

#include "CoreMinimal.h"
#include "MyEnum.generated.h"

UENUM(BlueprintType)
enum class EMyEnum : uint8
{
    // 列挙子を記述
    Test = 0    UMETA(DisplayName = "Test"),
};

なお、「#include "MyEnum.generated.h"」のMyEnumの部分は、ヘッダファイル名と同じにする必要があります。
同じにしないと、コンパイルエラーになります。
この例では、ファイル名はMyEnum.hとしているため、上記のとおり記述しています。

列挙型アセットとの比較

補足として、列挙型のアセットファイルで列挙型を実装する場合と比較します。
先ほど説明したC++で実装するための操作は、列挙型アセットを作成する場合における以下の操作と同じことを意味しています。

列挙型アセットでの実装

実装した列挙型の利用

C++で実装した列挙型は、ほかの列挙型と同じように、変数や関数の入出力のデータ型として利用できます。
たとえば、変数のデータ型に利用する場合、C++で実装した列挙型は以下のように選択できます。

C++で実装した列挙型の利用

列挙子の追加

C++での実装

今まで説明した手順で、C++の列挙型を実装し、それをデータ型として利用できるようになりました。
続いて、列挙型に対して列挙子を追加する必要があります。
列挙子を追加したソースコードを、以下に示します。
Apple, Orange, Peachという列挙子を追加しています。

#pragma once

#include "CoreMinimal.h"
#include "MyEnum.generated.h"

UENUM(BlueprintType)
enum class EMyEnum : uint8
{
    // 追加した列挙子
    Apple = 0     UMETA(DisplayName = "Apple"),
    Orange = 1    UMETA(DisplayName = "Orange"),
    Peach = 2     UMETA(DisplayName = "Peach"),
};

列挙子を追加すると、以下のとおりエディタ上で列挙子を選択できることを確認できます。

列挙子を追加した列挙型

列挙子を追加した列挙型

補足として、列挙型のアセットファイルで列挙子を追加する場合と比較します。
先ほど説明した、C++で列挙子を追加する操作は、列挙型アセットにおける以下の操作と同じことを意味しています。

列挙型アセットでの変数追加

以上で、C++による列挙型の実装は完了です。

【宣伝】
Unreal EngineのC++は、一般的なC++にはない独自の仕様が多く、難易度が高いため、体系的に学ぶのが効率的です。
Colory Gamesでは、Unreal EngineのC++を使う人を対象とした入門書をBOOTHで販売しています
Unreal Engine上でC++を使って開発するために必要となる基礎知識を一冊の本にまとめています。
対話形式でわかりやすく、プログラミング未経験でも理解できる構成としており、体系的にUnreal Engine C++を学習できます。

UE5 C++入門書 表紙 UE5 C++入門書 サンプルページ

【商品ページ(BOOTH)】 https://colory-games.booth.pm/items/4734728