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

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

本記事では、Unreal Engineで、C++で構造体(Structure)を実装する方法について説明します。

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

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

構造体の実装

C++での実装

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

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

ヘッダファイルを追加したら、構造体を実装するためのソースコードを記述します
以下のソースコードを記述します。
構造体名の頭に「F」を付ける決まりになっています。
この例では、「FMyStruct」という構造体名としています。

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

#pragma once

#include "CoreMinimal.h"
#include "MyStruct.generated.h"

USTRUCT(BlueprintType)
struct FMyStruct
{
    GENERATED_BODY()

    // メンバ変数を記述(後述)
};

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

構造体アセットとの比較

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

構造体アセットでの実装

実装した構造体の利用

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

C++で実装した構造体の利用

変数の追加

C++での実装

今まで説明した手順で、C++の構造体を実装し、それをデータ型として利用できるようになりました。
続いて、構造体に対して変数を追加する必要があります。
変数を追加したソースコードを、以下に示します。
MyVar1, MyVar2, MyVar3という変数を追加しています。

#pragma once

#include "CoreMinimal.h"
#include "MyStruct.generated.h"

USTRUCT(BlueprintType)
struct FMyStruct
{
    GENERATED_BODY()

    // 追加した変数
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int MyVar1 = 10;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    double MyVar2 = 3.0;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    FVector MyVar3 = FVector(1.0f, 2.0f, 3.0f);
};

変数を追加すると、以下のとおりエディタ上で変数が追加されていることを確認できます。

変数を追加した構造体

構造体アセットとの比較

補足として、構造体のアセットファイルで変数を追加する場合と比較します。
先ほど説明した、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