fc2ブログ

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

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

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

| PAGE-SELECT |

≫ EDIT

UE5/UE4 C++で列挙型(Enum)を使って複数の入力(実行)ピンを持つように関数指定子(UFunction)で指定する(UFUNCTION(meta = (ExpandEnumAsExecs)))

C++で列挙型(Enum)を使って複数の入力(実行)ピンを持つように関数指定子(UFunction)で指定する方法です。

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

・UE4 C++で作ったBPの実行ピンや出力ピン、戻り値を複数にする方法メモ
https://tamfoi.hatenablog.com/entry/2016/06/02/095807

公式ドキュメントはこちら。

・メタデータ指定子(Metadata Specifiers)
https://docs.unrealengine.com/4.26/ja/ProgrammingAndScripting/GameplayArchitecture/Metadata/

列挙型(Enum)を使って複数の入力(実行)ピンを持つには、メタデータ指定子(Metadata Specifiers)を使います。

まずは列挙型(Enum)を作成します。

UENUM(BlueprintType)
enum class EDebugTestEnum : uint8
{

One = 0,
Two = 1,
Three = 2,
Count = 3 UMETA(Hidden),

};

「UMETA(Hidden)」はBP側では見えないようにするための記述になります。

上記の列挙型(Enum)を使って複数の入力(実行)ピン関数を作成します。
関数を宣言する時にこんな感じでメタデータ指定子を宣言してあげます。

UFUNCTION(BlueprintCallable, meta = (ExpandEnumAsExecs = "DebugTestEnumInput"))
void ExecEnumInput(EDebugTestEnum DebugTestEnumInput);

「meta = (ExpandEnumAsExecs = "DebugTestEnumInput")」というメタデータ指定子の宣言
「DebugTestEnumInput」という名称の引数は、列挙型(Enum)を使った複数ピンになる。というものです。
上記名称の引数の型は列挙型(Enum)を指定してあげます。

公式ドキュメントのメタデータ指定子にはこう説明されています。

ExpandEnumAsExecs="Parameter"
BlueprintCallable 関数で、ある入力実行ピンがパラメータが使用する enum で
各エントリに対して作成されることを示します。
パラメータは、UENUM タグを持つ列挙型である必要があります。


上記で作られた関数はこんな感じになりました。
メタデータ指定子000
無事列挙型(Enum)の数だけ入力(実行)ピンがある関数が作成されました。
「Count」については「UMETA(Hidden),」を指定しているため非表示となっています。

使う機会は少ないかもしれませんが、必要な時に迷いそうな気もするので覚えておきたいですね。

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

| PAGE-SELECT |