ブループリントでアクタを参照する

ブループリントでアクタを参照するための操作ガイド

Windows
MacOS
Linux

このページでは、ブループリントで アクタを参照 する複数の方法について学習します。ゲームプレイ中にアクタの一部をブループリントで変更したい場合、またはあるブループリントから別のブループリントに参照を渡して、アクセスし修正できるようにする場合にアクタを適切に参照することが重要になります。

Level ブループリントの参照

参照を作る最も一般的な方法は、Level ブループリント 内のレベルに配置されたアクタを参照するものです。これを行うには、以下の手順に従います。

  1. プロジェクト内でアクタまたは Blueprint アクタをレベルに配置します。

    GHT5B_1.png

    ここでは、Box Trigger アクタをドラッグしました。

    アクタの種類についての詳細は 一般的なアクタの種類 のドキュメントを参照してください。

  2. レベルでアクタを選択した状態でメインツールバーから [ブループリント] ボタンをクリックします。次に [Open Level Blueprint] をクリックします。

    GHT5B_2.png

  3. [ブループリント エディタ] ウィンドウが開いたら、グラフ ウィンドウ内で 右クリック し、Create a Reference to TriggerBox を選択します。

    GHT5B_3.png

    この例では、トリガーボックス への参照を追加していますが、アクタはここに表示されます。

  4. 新規ノードがブループリントに追加されます。このノードをドラッグしてそのプロパティにアクセス / プロパティを設定したり、そこからイベントまたは関数を呼び出すことができます。

    GHT5B_4.png

    ここでは、プレイヤーがトリガーにオーバーラップしたとき画面にプリントします。トリガーから出るときにコリジョンを無効にし、(コリジョンを再度有効にしない限り) 再度トリガーできないようにしています。トリガーボックスを使用しましたが、レベルで Blueprint アクタを持つこともできます。Blueprint アクタは独自の変数、イベント、関数をその中に含み、参照を取得する方法を使用してアクセスしたり、呼び出したりすることができます。

アクタをスポーンする参照

アクタへの参照を取得する他の方法としては、レベルでアクタをスポーンするときに行うことができます。まず、以下の例を見てみましょう。

  1. プロジェクト内で、プレイヤー キャラクターのブループリントを開きます ( ThirdPersonCharacter を使用しています)。

  2. グラフ内で 右クリック して、Event Begin Play ノードを追加し、それを Spawn Actor from Class ノードに接続します。

  3. Spawn Actor ノードの [クラス] ドロップダウン メニューで、ゲーム開始時にスポーンする Actor クラスを選択します。

    GHT5B_5.png

    プレイヤーの Transform で (Get Actor Transform ノードで表されています)、Blueprint_Effect_Fire アクタをスポーンします。

  4. Spawn Actor ノードの Return Value ピンからドラッグして、Promote to variable を選択します。

    GHT5B_6.png

    これでスポーンしたアクタから変数が作成されます (SpawnedActor と名前を付けました)。Return Value からドラッグしてスポーンしている選択したアクタ内の変数、イベント、関数に直接アクセスすることもできますが、後でアクセスできるようにこれを変数にします。

  5. Control キーを押しながら変数をグラフ内にドラッグし、そこからドラッグして中のプロパティにアクセスします。

    GHT5B_7.png

    ここでは、Spawned Actor から Particle Effect コンポーネント (上図の黄色いボックスであらわされる P_Fire) にアクセスし、プレイヤーが F キーを押すと ThirdPersonCharacter ブループリントから 無効化 されます。

ダイレクト ブループリント通信の参照

レベル内にいくつかのブループリント アクタがあり、そのうちの 1 つを別のブループリント内から修正したい場合があるかもしれません。上記を行うために使用する標準的手順である ダイレクト ブループリント通信 について以下で説明します。

  1. レベルに 2 つのブループリント アクタを配置します。

    GHT5B_8.png

    スターター コンテンツにある Blueprint_Effect_Fire アクタと Blueprint_Effect_Sparks アクタを使用します。

    ゲームが開始したときに、数秒後に、炎のエフェクトが火花のエフェクトを無効にするようにしたいとします。

  2. Blueprint_Effect_Fire ブループリント内で Delay ノード (2 秒に設定) に接続された Event Begin Play を作成しました。

  3. 火花エフェクトを参照するようにします。従って、Blueprint_Effect_Sparks_C を使用して新規変数を作成します。

    GHT5B_9.png

    上記のように参照ブループリント アクタは、名前の後に続く _C で表されます。

  4. Control キーを押しながら新規変数をグラフ内にドラッグし、そこからドラッグしてブループリントのプロパティにアクセスします。

    GHT5B_10.png

    この変数に Target Blueprint と名前を付けました。火花エフェクトを無効にするために取得する際に、ブループリントのプロパティにアクセスできることがわかります。

  5. 次に、グラフを接続してゲーム開始後 2 秒で火花エフェクトを無効にします。

    GHT5B_11.png

  6. コンパイル し、エディタで 再生 をすると、機能せずエラーメッセージが表示されます。

    GHT5B_12.png

    展開しました。

    GHT5B_13.png

    エラーメッセージは、Accessed None になり、ブループリント間で通信して初めてアクタへの参照を取得しようとする際に起こる一般的なエラーが発生していることを示しています

    Blueprint_Effect_Fire ブループリントでターゲット ブループリントを特定し、それに対する変数を作成し、火花を無効にしました。しかし、この変更を適用するブループリントの実際のインスタンスを指定する必要があります。

    これは変数を Public にすることで行うことができます。その結果、メインエディタ ウィンドウ内でアクセスできるようになり、どのインスタンスに影響を与えるかを選択可能になります。

  7. Blueprint_Effect_Fire ブループリント内で、TargetBlueprint 変数の隣にある目の形をしたアイコンをクリックします。

    GHT5B_14.png

    これで、この変数が Public に設定され、エディタ内で設定できるようになります。

  8. [コンパイル] ボタンをクリックし、メインエディタ ウィンドウに戻ります。レベルで Blueprint_Effect_Fire アクタを選択します。

  9. [詳細] パネルに Target Blueprint オプションがあるのがわかります。ここでターゲットとなる Blueprint アクタを選択することができます。

    GHT5B_16.png

    ドロップダウン メニューを使用してターゲット アクタを選択、または スポイトツール を使用し、シーン内のターゲット アクタを選択できます。

    GHT5B_17.png

  10. ターゲット アクタを設定した状態でエディタで 再生 すると、2 秒後に火花エフェクトが無効になります。

    ダイレクト ブループリント通信 の使用に関する詳細は、ダイレクト ブループリント通信ブループリント通信の使用方法 をご覧ください。

Cast To 参照

ダイレクト ブループリント通信の手法は、レベルに存在するアクタ間の参照を取得するために機能します。しかし、レベル内でアクタへの参照を取得し、それをまだレベル内には存在しない Blueprint アクタに渡したい場合があるかもしれません。例えば、ゲームが開始するまで存在しないプレイヤー キャラクター (またはその他のアクタ) が考えられます。この場合、Cast To ノードを使用して参照を Target Blueprint に送ることができます。

  1. 参照するアクタをレベルに配置します。

    GHT5B_18.png

  2. レベルでアクタを選択した状態でメインツールバーから [ブループリント] ボタンをクリックします。次に [Open Level Blueprint] をクリックします。

    GHT5B_2.png

  3. 右クリック し、[Create a Reference to...] オプションを選択します。

    GHT5B_19.png

  4. 右クリック して、Event Begin PlayGet Player Character ノードを追加します。

  5. Character ブループリントで参照したいタイプの新規変数を作成します。

    GHT5B_21.png

    ここでは、ThirdPersonCharacter ブループリント内に、TargetBlueprint と呼ばれる Blueprint_Effect_Fire_C タイプを作成しました (炎のエフェクトが参照したいものであるため)。ゲーム開始時に、Level ブループリント はレベル内のアクタへの参照を取得し、それを ThirdPersonCharacter ブループリントに渡し、プロパティにアクセスできるようにします。

  6. Control キーを押しながら変数をグラフ内にドラッグし、そこからドラッグしてそのプロパティにアクセスします。

    GHT5B_22.png

    プレイヤーが F キーを押すと P_Fire エフェクトを無効にします。

    これで参照を保持する変数を作成しましたが、Level ブループリント からこの参照を渡す必要があります。

  7. スクリプトが完了したら、Character ブループリントを コンパイル し、再度 Level ブループリント を開きます。

  8. Cast To ノードの As My Character C ピンをドラッグして、Set Target Blueprint ノードを追加します。

    GHT5B_23.png

    参照ノードを Set Target Blueprint (またはご自分で変数に付けた名前) の入力ピンに接続します。

  9. コンパイル し、エディタで 再生 します。

    この例の手順に従った場合、F キーを押せば炎のエフェクトを無効にできるはずです。

    アクタのキャスト に関する詳しい情報は、ブループリント タイプにキャストするブループリント通信の使用方法 をご覧ください。

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信