インターフェスの使用方法

複数のブループリントと一度に通信するためにブループリント インターフェースを使用したサンプル

Windows
MacOS
Linux

この操作手順では、呼び出し時に複数のブループリントでさまざまなスクリプトを実行する ブループリント インターフェース を設定します。

このガイドでは、スターターコンテンツ を有効にした状態で Blueprint First Person テンプレートを使用します。

  1. 「Props」フォルダの SM_Rock右クリック して [Create Destructible Mesh (被破壊メッシュを作成)] を選択します。

    Interface1.png

    このスタティックメッシュを、撃たれた時に砕けてしまう被破壊メッシュへ変換します。

  2. 被破壊メッシュを開いて、[Fracture Mesh (フラクチャ メッシュ)] をクリックして 保存 してから [Destructible Mesh Editor (被破壊メッシュ エディタ)] ウィンドウを閉じます。

    Interface2.png

  3. SM_GlassWindow_DM アセットを 右クリック して、[Asset Actions (アセットアクション)] から [Create Blueprint Using This...(これを使用してブループリントを作成)] を選びます。

    Interface3.png

    ブループリントの名前の入力と保存先を指定する画面が表示されます (例では SM_GlassWindow_DM を使用)。

  4. コンテンツブラウザ 内を 右クリック して、[ブループリント] から [ブループリントインターフェース] を選びます。

    Interface4.png

    ここで再びブループリント インターフェースの名前と保存場所の指定を要求されます (例では DM_Interface を使用)。

  5. ブループリントインターフェース内で既存関数に IsDestructible? と名前をつけて、以下に示すように New をクリックして Inputs を追加します。

    Interface5.png

    このブループリントインターフェースを実装するブループリント間で変数を渡すために使用する Inputs を 3 つ作成しました。ヒットしたオブジェクトにダメージ量を渡すために使用する Damage という Float 型変数と、適用する Impulse Strength (インパルス強度) の量を示す Strength という別の Float 型変数を 2 つ作成しました。最後にオブジェクトがヒットされた位置を保持するために、情報も渡せるように HitLoc という ベクター値 を追加します。

  6. コンパイル保存 してから、ブループリント インターフェースを終了します。

  7. コンテンツブラウザSM_GlassWindow_DM ブループリントを開いて、ツールバーから [Class Settings (クラス設定)] オプションを選びます。

    Interface6.png

  8. [Details (詳細)] パネルの [Add (追加)] ボタンをクリックし、BP_Interface を追加します。

    Interface7.png

    このブループリントにブループリントインターフェースが実装され、ブループリント内の関数にアクセスが可能になります。

  9. グラフを 右クリック した後に ? を検索して、Event Is Destructible? Event を選択します。

    Interface8.png

  10. Ctrl キーを押しながら [MyBlueprint] ウィンドウから Destructible をドラッグして以下に示すスクリプトを作成します。

    Interface9.png

    Destructible コンポーネントから Apply Damage を使用して、ガラスの窓にダメージを適用するために必要なダメージ、強度、位置、そして方向を接続します。実際のダメージ、強度、ヒット位置の情報は別のブループリントからこのブループリントへブループリントインターフェースを通じて渡されます。早速この操作をおこなってみましょう。

  11. コンパイル保存 してから、ブループリントを閉じます。

  12. コンテンツ ブラウザContent/StarterContent/BlueprintsBlueprint_CeilingLight ブループリントを開きます。

    Interface10.png

    このブループリント インターフェースを使用して、このライトを撃った時とは違うことをしてみましょう。

  13. Class SettingsDM_Interface を追加してから、PointLight1 コンポーネントをドラッグして以下のスクリプトを作成します。

    Interface11.png

    Event Is Destructible? が呼び出されると、まずライトをグリーンに設定します。再度呼び出された時に、強度を値 0 に設定します (ライトをオフにします)。インターフェースに格納された Damage、Strength、または HitLoc 情報は、このブループリントと関連性がないため、使用していなことに留意してください。ブループリント インターフェースを使用することで、ごく普通の関数を、そのインターフェースと関数を実装するすべてのブループリント上で呼び出して、それぞれのブループリントで実行するスクリプトを判断する一般的な関数を作成することができます。

  14. コンパイル保存 してから、ブループリントを閉じます。

  15. コンテンツ ブラウザContent/FirstPersonBP/BlueprintsFirstPersonProjectile ブループリントを開きます。

    Interface12.png

    これはプレイヤーがゲーム内で武器を発射した時にスポーンされる、発射物のスクリプトを格納するブループリントです。

  16. [Class Settings]DM_Interface を追加してから、グラフを 右クリック して、IsDestructible?(Message) ノードを追加します。

    Interface13.png

    この設定により IsDestructible? 関数を実行して、インターフェースと関数を実装するすべてのブループリントも実行します。

    ノードが表示されない場合は、コンテキストメニューの右上隅にある Context Sensitive (状況に合わせて表示) オプションのチェックを外します。

  17. BranchFalse ピンを IsDestructible? ノードと接続して、OtherHitLocation ピンを接続します。

    クリックしてフルサイズで表示

    上図では、ヒットされたオブジェクトが物理をシミュレーション中かどうかをチェックする既存のスクリプトを追加しました。オブジェクトが物理をシミュレーション中の場合は、ブループリント インターフェースに IsDestructible? 関数を呼び出して、ターゲットに 1000 のダメージと 100 の強度を適用します (Hit Location も取得する Event Hit ノードの Other ピンから収集して、通過させるために HitLoc 変数に割り当てます。)。

  18. コンパイル保存 してから、ブループリントを終了します

  19. SM_GlassWindow_DMBlueprint_CeilingLight ブループリントをレベルへドラッグしてから、[Play (プレイ)] を押してエディタで再生します。

    ガラスを撃つと、ガラスが砕けてばらばらになります。

    Example1.png

    ライトを一度撃つと、ステップ 13 で指定した色が変更します。

    Example2.png

    次にライトを撃つと、ライトが消えます (ステップ 13 でも指定)。

    Example3.png

これは ブループリント インターフェース を使用してブループリント間で変数を渡して、インターフェースを実装したブループリントでさまざまなスクリプトを実行する一例です。ブループリントインターフェースの操作と別の形態で行うブループリント通信に関する詳細は、以下に示す Related Topics セクションを参照してください。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback