ブループリント インターフェースの実装

ブループリント インターフェースは、相手側もインターフェースを実装していればタイプの異なるターゲットでもブループリントに関数を呼び出すことができます。

Choose your operating system:

Windows

macOS

Linux

ブループリントでインターフェースを使用する

ブループリント インターフェースを使用すると、ある特有の機能を共有するタイプの異なる多数のオブジェクトの相互作用に 共通メソッドを使用することができます。つまり車や木など、狙撃されてダメージを受けるといったある特定の共通項を持つ、 まったく異なるタイプのオブジェクトを持つことができます。OnTakeWeaponFire 関数を格納するブループリント インターフェースを作成し、 車と木の両オブジェクトを作成したブループリント インターフェースへ実装することによって、 車と木を同タイプのオブジェクトとみなし、いずれかが撃たれた時に OnTakeWeaponFire 関数を呼ぶことができます。

インターフェースの追加

ブループリント インターフェースおよびネイティブ コード (C++) で定義されたインターフェースは、全ての ブループリント へ追加することができます。

  1. メインの [レベル エディタ] ウィンドウから、プロジェクト内の Level ブループリント を開きます。

    OpenLevelBP.png

  2. 上部の ツールバー から [Class Settings (クラス設定)] ボタンをクリックします。

    ClassSettings.png

  3. 右側の [Details (詳細)] パネルで Interfaces カテゴリを見つけます。

  4. [Add Interface (インターフェスを追加)] ボタンをクリックして、有効なインターフェースのリストを表示し、使用するインターフェースを選択します。

    InterfacesCategory.png

    InterfacesListPopulated.png

インターフェースを削除するには、それぞれの 実装済みインターフェース リストの横にある button_X_Remove.png ボタンをクリックします。ブループリント インターフェースから通常のブループリント関数に移動することもできます。詳細は、 ブループリント インターフェースの移行 を参照してください。

インターフェース カテゴリ内の [Inherited Interfaces] セクションに、オブジェクトによって継承されたインターフェース (すなわち、現在のブループリントが派生したブループリントで実装されているもの) があれば 自動的にエントリされます。

インタフェース メンバの実装

インターフェースがブループリントへ追加されると、ブループリントは呼び出し時にアクションを実行するために インターフェースの関数を実装しなくてはいけません。実装は、 EventGraph でインターフェース関数用に Event ノードを配置して行います。 Event ノードに接続したノードは、関数の機能の定義や実装を行います。

  1. ブループリンの EventGraph 右クリック をして、 [Add Event (イベントを追加)] > [Event Example Function] の順に選択します

    Implement Interface - Add Event Implement Interface - Event Node

    追加したいイベントのタイプを選択すると、そのイベントがグラフに追加されます。

  2. Event の実行ピンに接続しているノードのネットワークを作成して機能を持たせます。

    Implement Interface - Event Implementation

インターフェース関数の呼び出し

インターフェース関数は Interface Message ノードを使用して実行されます。 ターゲットがインターフェースを実装していないと失敗する点を除いて、通常の Function Calls のような動作をします。

Implement Interface - Call Function

他のブループリント上でインターフェース関数を呼び出す

インターフェースは異なるブループリント間のコミュニケーションに役立ちます。単一のインターフェースからの関数はブループリント上に呼び出すことができます。これは以下の 2 つの基準が合致すると可能になります。

  • 両ブループリントが必須の関数を伴って同一インターフェースを実装している時

  • 呼び出し側のブループリントが、相手のブループリントのインゲームのインスタンス名を把握している時

イベントグラフ内に Interface Function ノードを作成する際、コンテキストメニューにしばしば 2 通りの関数がリスト表示されます。

MyFunctionInMenu.png

[Call Function (関数呼び出し)] 配下にリストされている関数はローカルバージョンであり、このブループリント内のみで呼ばれることを覚えておくことが重要です。

[Interface Messages (インターフェース メッセージ)] 配下にリストされている関数は、同一インターフェースを実装している別のブループリントのインターフェースを介して関数を呼び出すようにつくられています。

ノード タイトルの下に、区別するためにラベルが配置されています。

Local_MyFunction.png

Interface_MyFunction.png

ローカル バージョン

インターフェース メッセージ バージョン

インターフェース メッセージ関数の呼び出しには、関数を呼び出している適切なブループリントのインスタンスの提供が必須となります。

この画像は、ターゲット入力値として別のブループリントを送信しています。これにより提供されたブループリント上で関数を呼び出します。このブループリントがインターフェースを実装していない場合、何も起こりません。

InterfaceMessageFunctionCalled.png

レベル内に存在するブループリントを指定するには、'アクタ' タイプのパブリック変数の作成が最適です。レベルエディタの [Details (詳細)] タブを使用して、その変数の値に適切なブループリントを割り当てます。

他の Level ブループリント上でインターフェース関数を呼び出す

インターフェースは Get Streaming Level ノードを使うことにより、サブレベル間での通信も可能にします。レベルをロードして有効しすれば、 Interface Message がレベルのブループリント スクリプトによってターゲットとして呼び出されます。

InterfaceGetLevelStreaming.png

インターフェース関数のオーバーライド

インターフェース関数の最も重要な側面の 1 つは、独自の実装を持たないため、インターフェースを実装する各ブループリントに対し個別に機能性を定義できることです。

インターフェース関数がブループリントによって実装されると、そのインターフェースの関数が [My Blueprint] パネルに表示されます。

iFunctionInExplorer.png

その関数を ダブルクリック すると、ブループリントエディタで関数が開きます。この関数のローカル実装が表示されます。ここで定義される機能はすべて、ブループリント固有となります。このように、インターフェース実装済みの各ブループリントにカスタム機能を定義することができます。

例えばこの画像では、ブループリント内で開くと基本的なインターフェース関数があるのがわかります。現時点で関数は何もしません。

DefaultFunction.png

数値の比較や値の出力などを実行する簡単なネットワークを作成することができます。

ComparisonFunction.png

関数がローカルで呼ばれると、浮動小数値を受け取りその値を 10 と比較して、結果として画面に boolean 値を出力します。

FunctionLogging.png

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる