UE5/UE4 C++で列挙型(Enum)を使って複数の入力(実行)ピンを持つように関数指定子(UFunction)で指定する(UFUNCTION(meta = (ExpandEnumAsExecs)))
こちらを参考にさせていただきました。
・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)を作成します。
「UMETA(Hidden)」はBP側では見えないようにするための記述になります。UENUM(BlueprintType)
enum class EDebugTestEnum : uint8
{One = 0,
Two = 1,
Three = 2,
Count = 3 UMETA(Hidden),};
上記の列挙型(Enum)を使って複数の入力(実行)ピン関数を作成します。
関数を宣言する時にこんな感じでメタデータ指定子を宣言してあげます。
「meta = (ExpandEnumAsExecs = "DebugTestEnumInput")」というメタデータ指定子の宣言がUFUNCTION(BlueprintCallable, meta = (ExpandEnumAsExecs = "DebugTestEnumInput"))
void ExecEnumInput(EDebugTestEnum DebugTestEnumInput);
「DebugTestEnumInput」という名称の引数は、列挙型(Enum)を使った複数ピンになる。というものです。
上記名称の引数の型は列挙型(Enum)を指定してあげます。
公式ドキュメントのメタデータ指定子にはこう説明されています。
ExpandEnumAsExecs="Parameter"
BlueprintCallable 関数で、ある入力実行ピンがパラメータが使用する enum で
各エントリに対して作成されることを示します。
パラメータは、UENUM タグを持つ列挙型である必要があります。
上記で作られた関数はこんな感じになりました。

無事列挙型(Enum)の数だけ入力(実行)ピンがある関数が作成されました。
「Count」については「UMETA(Hidden),」を指定しているため非表示となっています。
使う機会は少ないかもしれませんが、必要な時に迷いそうな気もするので覚えておきたいですね。
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑