アクタを参照する

UE4 でアクタを参照するための操作ガイド

Choose your operating system:

Windows

macOS

Linux

コンテンツ

アクタ への参照を確立することで、ゲームプレイ中にその プロパティ 変数 イベント 関数 (該当する場合) に、ブループリント、C++ を介してアクセスし、ゲームプレイのニーズに合わせてこれらを変更することができます。

例えば、プレイヤーがトリガーボックスに入ったら点灯するライトが必要だとします。ライトへの参照とトリガーボックスを用意し、このライト アクタをトリガーボックスの OnComponentBeginOverlap Event (この場合にライトをオンにする) に結び付けて点灯させることができます。

アクタへの適切な参照を取得することは、アクタ間のやりとりでも重要です。参照を誤って指定するとやりとりに失敗して望ましくない結果を招くからです。

実装ガイド

コンテンツ

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

Level ブループリントの参照

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

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

    GHT5B_1.png

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

    アクタの種類についての詳細は「 一般的なアクタの種類 」を参照してください。

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

    GHT5B_2.png

  3. [Blueprint Editor] ウィンドウが開いたら、グラフ ウィンドウ内で 右クリック し、 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 ノードの [Class] ドロップダウン メニューで、ゲーム開始時にスポーンする 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. [Compile] ボタンをクリックし、メインエディタ ウィンドウに戻ります。レベルで Blueprint_Effect_Fire アクタを選択します。

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

    GHT5B_16.png

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

    GHT5B_17.png

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

    ダイレクト ブループリント通信 の使用に関する詳細は、「 ダイレクト ブループリント通信 」と「ブループリント通信の使用方法」を参照してください。

Cast To 参照

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

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

    GHT5B_18.png

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

    GHT5B_2.png

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

    GHT5B_19.png

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

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

    GHT5B_21.png

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

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

    GHT5B_22.png

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

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

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

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

    GHT5B_23.png

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

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

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

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

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