遭遇した問題
配列の引数を持つ、ブループリントから呼び出し可能な関数を以下のコードのように作成した際、ブループリントエディタでコンパイルすると「The current value of the ‘ ○○ ‘ pin is invalid: Array inputs (like ‘○○’) must have an input wired into them (try connecting a MakeArray node).」というエラーが発生する。
public:
UFUNCTION(BlueprintCallable, meta = (KeyWords = "hoge"))
static void Hoge(TArray<FName> Names);//「= TArray<{型名}>()」で引数を初期化してもダメ
ピンの現在の値が無効です: 配列入力(’○○’など)には入力が配線されている必要があります(MakeArrayノードを接続してみてください)。
DeepL
対処法
以下のコードのように UFUNCTION の meta 内に AutoCreateRefTerm を追加すると良い。
public:
UFUNCTION(BlueprintCallable, meta = (KeyWords = "hoge", AutoCreateRefTerm = "Names"))//ここの「Names」は引数の配列名に合わせる
static void Hoge(TArray<FName> Names);
リストされているパラメータは参照によって渡されますが、ピンが接続されていなければ自動作成されるデフォルトを持ちます。これは配列ピンで使用されるブループリントの便利な機能です。
メタデータ指定子