このページでは、ダイレクト ブループリント通信 を使用して 2 つのブループリント間で行う直接通信やデータの受け渡し方法を説明します。
このサンプルでは、プレイヤーはボックス経由で受け渡しおよび通信、パーティクル エフェクトのアクティベートができます。
このガイドでは、スターターコンテンツ を有効にした状態で Blueprint Third Person テンプレートを使用します。
コンテンツ ブラウザ で、「Content/StarterContent/Shapes」フォルダを開きます。
Shape_Cube を 右クリック し、[Asset Actions (アセット アクション)] から [Create Blueprint Using This... (これを使用してブループリントを作成...)] を選択します。
表示された確認ボックスの [Ok] をクリックしてブループリントを作成します。
Shape_Cube ブループリントで左上にある [Components] の [Static Mesh] を選択します。
[Details (詳細)] パネルで、[Collision Presets (コリジョン プリセット)] を [OverlapOnlyPawn] に設定します。
この設定で、 Pawns (延長すると Characters ) のみをボックス経由で渡すことができるようになります。
[MyBlueprint] ウィンドウで、 [Add Variable (変数を追加)] ボタンをクリックし、変数の名前を「 TargetBlueprint 」とします。
このブループリントが直接通信の相手になります。
変数の [Details] パネルで Variable Type を [Blueprint_Effect_Fire] に設定し、編集可能 にします。
通信相手となるブループリントを設定し、変数を公開して編集可能 (このブループリント外での編集が可能) にしました。
[My Blueprint] ウィンドウで [Static Mesh] を選択し、次に [Details (詳細)] パネルに On Component Begin Overlap Event を追加します。
これによりノードが追加され、キューブを入力するとスクリプトが発生するようにする Event Graph が開きます。
Target Blueprint と Get P Fire と Get Fire Audio を引き出して、下図のように Activate ノードに接続します。
ここで Target Blueprint の Particle Effect コンポーネントと Audio コンポーネントへアクセスして、それらを有効にします。
コンテンツ ブラウザ の [Blueprint] で、Shape_Cube ブループリントをレベルへドラッグします。
コンテンツブラウザ の Content/StarterContent/Blueprints で、Blueprint_Effect_Fire ブループリントを開きます。
[Components] ウィンドウの [P_Fire] をクリックし、次に [Details (詳細)] パネルの [Auto Activate (自動アクティベート)] のチェックを外します。
レベルにボックスが入った時にアクティベートする設定にしてあるので、このエフェクトが自動アクティベートしないようにしました。
Blueprint_Effect_Fire ブループリントをレベルへドラッグします。
Shape_Cube ブループリントを選択し、次に [Details (詳細)] パネルのドロップダウン メニューで [Blueprint_Effect_Fire] ブループリントを選択します。
ここで通信相手にしたい Blueprint_Effect_Fire ブループリントのインスタンスをレベル内で指定します。レベル内に Blueprint_Effect_Fire ブループリントのインスタンスが複数配置されている場合は、それぞれのインスタンスがドロップダウン メニューに表示されるので、通信相手の Target Blueprint のインスタンスを示すことができます。
スポイト アイコンをクリックすれば、ドロップダウン メニューを使わなくてもレベル内の Target Bluperint のインスタンスを選択することができます。指定した変数タイプに基づいたブループリントしかターゲットとして選択できないのでご注意ください。
[Play (プレイ)] ボタンをクリックしてエディタで再生し、キャラクターがボックスを走利抜けるテストをします。
キャラクターがボックスへ入ると、レベル内で炎のエフェクトがアクティベートするのが分かります。別のブループリントからブループリントのプロパティを変えるためだけでなく、関数やイベントといったブループリントでの通常処理の呼び出しにも Direct Bluperint Communication を使用できます。