Unreal Engine5で、ブループリントインターフェースを使うと、ブループリントをキャストせずにカスタム変数を参照することができるので、ブループリントの汎用性を向上させることができます。
ここでは、キャラクターブループリントで使っている、キャラクター状態フラグのBoolean型変数を、アニメーションブループリントで参照します。
ブループリントインターフェースの作成
ブループリントインターフェースでは、関数とそのインプット、アウトプットの型を宣言しますが、関数の中身は記述しません。
アセットの作成
コンテンツブラウザでフォルダを選択→フォルダ内で右クリック→「ブループリント」→「ブループリントインターフェース」で作成します。
関数の追加
作成したアセットを開くと、既に「マイブループリント」に関数が追加されているので、名前を設定します。
アウトプット/インプットの追加
インプットは、関数を呼び出す側のブループリントで関数に渡す値の型を定義し、アウトプットは、関数を実行する側のブループリントで関数から出力する値の型を定義するものです。
追加した関数を選択し、「詳細」→「インプット」または「アウトプット」右の「+」で、関数の出力結果となる値の名前と型を追加します。
アウトプットを追加すると、グラフにノードとピンが追加されます。
ここでは、キャラクターブループリントから「Is Charging Jump」と「Is Roller On」というBoolean型の変数を出力したいので、アウトプットに2つの値を追加しました。
関数を実行する側のブループリントの設定
関数を実行する側のブループリント(今回の例ではキャラクターブループリント)では、作成したインターフェースを追加し、インターフェースで宣言した関数をオーバーライドする形で処理を追加します。
インターフェースの追加
関数を実行する側のブループリントを開き、「クラス設定」→「実装インターフェース」の「追加」→インターフェースを選択して、追加します。
関数のオーバーライド
「マイブループリント」→「関数」の「オーバーライド」→インターフェースの関数を選択→開いたグラフに処理を追加することで、オーバーライドします。
ここでは、キャラクターブループリント内の変数「Is Charging Jump」と「Is Roller On」の値を、関数のアウトプットに渡すようにしました。
関数を利用する側のブループリントの設定
関数を利用する側のブループリント(今回の例ではアニメーションブループリント)では、特に設定をしなくても、イベントグラフでインターフェースに追加した関数を呼び出せます。
ただし、呼び出した関数のTargetに、インターフェースを持つコンポーネントを設定して、対象を限定する必要があります。
関数の呼び出し
関数を利用する側のブループリントのイベントグラフで、右クリックして関数を検索し、ノードを追加します。
値の取得
追加した関数のノードからアウトプットされた値を取得し、変数に設定します。
ここでは、取得した値をアニメーションブループリント内の変数「Is Charging Jump」と「Is Roller On」に渡すようにしました。
これで、アニメーションブループリント内でキャラクターブループリントをキャストせずに、キャラクターブループリント内のカスタム変数を参照することができました。
以上です。
コメント