Language:
Page Info
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

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

ダイレクト ブループリント通信 は、非常に一般的な通信方法であり、任意のポイントで2 つの Blueprint アクタに対話させた場合に優れた手段です。このタイプの通信は常に 1 対 1 です。つまり、あるブループリント (Working Blueprint (作業ブループリント)) が、別のブループリント (Target Blueprint (ターゲット ブループリント)) にアクセスするリクエストをします。ダイレクト ブループリント通信の最も簡単な使用方法は、公開されているオブジェクト 変数 を通してターゲット ブループリントを参照し、次に使用したいブループリント インスタンスを指定するものです。

一般的なワークフロー

ダイレクト ブループリント通信を使用するためには、まず最初に通信するブループリントを特定します。

SelectedBlueprints.png

これは、Character ブループリントと、そのブループリントが消すことができるようにしたい Ceiling Light ブループリントです。

このインスタンスでは、作業ブループリントが Character ブループリントで、Ceilight Light ブループリントをターゲットにしています。ダイレクト ブループリント通信を使って、プレイヤー キャラクターがボタンを押すと Ceiling Light ブループリントをターゲットにしてライトを消すように指示することができます。そのためには、Ceiling Light ブループリントをターゲットにするキャラクター ブループリント内に一般に公開する変数を作成する必要があります。

TargetVariable.png

このように Character ブループリント内に Blueprint Ceiling Light タイプの変数を作成し、レベルで希望通りに影響させたいライトのインスタンスを設定できるように [Editable (編集可能)] にします。

変数、関数、イベントの公開は慎重に検討してください。そして、他人がアクセスおよび変更しても安全な変数のみ、公開するようにしてください。ベストプラクティスの指針としては、すべての変数を公開するのではなく、ブループリントが必要とする変数、レベル デザイナーによる変更を可能にしたい変数のみを公開するようにします。

Character ブループリントが選択されると、[Details (詳細)] パネルで設定できる変数がレベル内に表示されます。

NewVariableCreated.png

この変数はデフォルトは None に設定されています。照明器具は複数あるので、どれと通信するのか定義する必要があるため、影響させたい照明器具のインスタンスを定義するように設定しなければなりません。ドロップダウン メニュー (またはスポイト アイコン) をクリックしてレベルから選択し、通信対象のインスタンスを指定します。

SelectInstance.png

レベル内に照明器具は 1 つしかないので 1 つしか表示されていませんが、複数存在すればドロップダウン メニューに複数表示されます。

直接通信するインスタンスを定義すると、Character ブループリントからそのライトの機能、変数、もしくはその他の設定にアクセスすることができるようになります。

ウォークスルーの詳細は、ダイレクト ブループリント通信 をご覧ください。

関数とダイレクト ブループリント通信

ブループリントで 関数 を使用する場合、その関数に対するパラメータとしてターゲット ブループリント タイプを指定すればダイレクト ブループリント通信を使うことができます。

FunctionTarget.png

このように、入力 ピンのある ToggleLight 関数を作成して Blueprint Ceiling Light に設定してみました。

関数でターゲット ブループリントを使う場合も、ターゲットのどのインスタンスと通信するのか指定しなければなりません。一般に公開される変数 (下図) を使うか、あるいはこの関数の呼び出し時に外部に提供して指定します。

ToggleLight.png

このように F が押されると、ターゲットが一般に公開される変数となって ToggleLight 関数が呼び出されます。

トラブルシューティング

変数でインスタンスを何も指定していない場合、一般的なエラーが発生します。作業ブループリントから呼び出した場合に、ターゲット ブループリントからのスクリプティングの開始でトラブルが発生したら、使用するブループリント インスタンスが指定されていることを確認してください。

NoneSettings.png

かわりに、関数呼び出しの結果から変数を設定した場合、変数が "Access None" の例外を持っているという警告がログに表示されます。[Message Log] ウィンドウが表示されると、問題発生源のノードへのクリック可能なリンクが示されます。

ErrorMessage.png

ここでは、関数が呼び出されていますが、ターゲット ブループリントのインスタンスが指定されていないので、Accessed None エラーとなってしまいました。このエラーには、問題を起こしたスクリプトならびにエラーが発生したブループリントが表示されます。いずれかをクリックすると、問題の原因となっているブループリントが開きます。