スクリプト アクション は、ユーザーが Unreal Editor で起動する Editor Utility ブループリント です。起動するには、コンテンツ ブラウザ で複数のアセットを右クリックするか、上図のように [Level Viewport (レベル ビューポート)] または [World Outliner (アウトライナー)] で複数のアクタを右クリックします。
このワークフローが特に役立つのは、アセット または アクタ の特定のセットに関してコンテキストに応じた対応をさせるためのブループリント ロジックが必要な場合です。通常、スクリプト アクション は実行時に選択されているアセットまたはアクタのリストを取得して、それらのオブジェクトを変更したり、その他の方法でグラフにそれらのオブジェクトを取り入れたりします。
このページでは、このような Editor Utility Blueprint を作成して起動する方法と、特定の種類のアセットまたはアクタのみに適用するように Editor Utility Blueprint をカスタマイズする方法について説明します。
手順
この手順では、スクリプト アクションをサポートする親クラスの 1 つから新しい Editor Utility Blueprint クラスを作成し、そのクラスの新しいイベント グラフをスクリプト アクションとして表示します。
-
コンテンツ ブラウザ 内で新しいクラスを作成するフォルダを右クリックして、コンテキスト メニューから [Editor Utilities (エディタ ユーティリティ)] > [Editor Utility Blueprint (エディタ ユーティリティ ブループリント)] を選択します。
-
スクリプト アクションを、コンテンツ ブラウザ で選択したアセット上で動作させるか、[Level Viewport (レベル ビューポート)] または [World Outliner (アウトライナー)] で選択したアクタ上で動作させるかを決定します。
-
スクリプト アクションでアセットを操作するには、親クラスとして [AssetActionUtility] を選択して、[Select (選択)] を押します。
-
スクリプト アクションでアクタを操作するには、親クラスとして [ActorActionUtility] を選択して、[Select (選択)] を押します。
-
-
コンテンツ ブラウザ で新しいクラスにわかりやすい名前を付けます。
このクラス名は、スクリプト アクションを実行するときには表示されません。後でスクリプト アクションを変更したり、新しいスクリプト アクションを追加したりする必要がある場合に、プロジェクトで他のブループリント クラスとこのクラスを分ける必要があるからです。
-
新しいクラスをダブルクリックしてブループリント エディタで開きます。
-
このクラスのスクリプト アクションを作成するには、新しい関数を作成するか、クラスのイベント グラフで新しい Custom Event ノードを作成します。
Function Entry ノードまたは Custom Event ノードで、[Call In Editor] ボックスのチェックがオンになっていることを確認します。これは新しい関数を作成するときに自動的に行われますが、カスタム イベントを使用する場合は自分で行う必要があります。
たとえば、AssetActionUtility に対する新しい関数は、コンテンツ ブラウザで選択されているアセットのリストを繰り返し処理し、各アセットの名前を [Level Viewport (レベル ビューポート)] に表示します。
以下の画像は、ActorActionUtility に実装された同様の関数を示しています。
[Development (開発)] > [Editor] カテゴリには、スクリプト アクション用の便利なブループリント ノードがいくつかあり、上記の例のスクリプト アクションの実行時に選択されたオブジェクトのリストを返すノードが含まれています。Get Selected Assets は、コンテンツ ブラウザ で選択されたすべてのアセットへの参照の配列を返し、Get Selection Set は、レベルで選択されているアクタの配列を返します。
また、まだインストールしていない場合は、アセットおよびレベル アクタを操作するその他の関数ライブラリにアクセスするため、Editor Scripting Utilities プラグインをインストールしてください。「エディタのスクリプティングと自動化」を参照してください。
-
ブループリント クラスを [Save (保存)] して、[Compile (コンパイル)] します。
最終結果
ブループリント クラスを保存してコンパイルしたら、ブループリント クラスで選択した親クラスに応じて、アセットまたはアクタのいずれかのコンテキスト メニューに新しい [Scripted Actions (スクリプト アクション)] サブメニューが表示されます。このサブメニューには、ブループリント クラスで設定した各関数またはカスタム イベントが含まれます。
たとえば、コンテンツ ブラウザ で 1 つ以上のアセットを右クリックすると、以下のようになります。

または、[Level Viewport (レベル ビューポート)] か [World Outliner (アウトライナー)] で 1 つ以上のアクタを右クリックすると、次のようになります。

AssetActionUtility クラスまたは ActorActionUtility クラスで設定した各関数とカスタム イベントは、コンテキスト メニューの個別のオプションとして使用可能になります。1 つのブループリント クラスで、必要な数のスクリプト アクションを作成できます。または、複数のブループリント クラスを作成して、それらのクラス全体にスクリプト アクションを配布できます。
アクションを特定のクラスに制限する
ブループリントをコンパイルして保存し、レベル内のアクタを右クリックすると、コンテキスト メニューに [Scripted Actor Actions (スクリプトアクタ アクション)] オプションが表示されることに気づくと思います。スクリプトは任意のアクタ クラスで使用できますが、スクリプトが複数のクラス用に設計されていない場合は混乱が生じる可能性があります。アーティストが調節可能なアクタを制御するため、スクリプト アクションを特定のクラスに制限することができます。
サポートされるクラスを調整するには、以下を実行します。
- 上部のツールバーで、[Class Defaults (クラスのデフォルト)] をクリックします。
- [Supported Classes (サポートされているクラス)] バーで、プラス [+] アイコンをクリックします。
-
スタティックメッシュ アクタ を検索してクリックします。
- コンパイル (Ctrl + Alt) して 保存 (Ctrl + S) します。
動的入力
スクリプト アクションを起動したユーザーから情報を要求できるように、スクリプト アクションを設定できます。Function Entry ノードまたは Custom Event ノードに 1 つ以上の 入力 を追加すると、エディタでスクリプト アクションを実行するたびに、その入力を指定するよう求められます。これは、アクションを呼び出すたびにスクリプトに異なる追加情報が必要になる場合に役立ちます。
たとえば、この関数には、文字列、アクタ オブジェクトのリファレンス、マテリアル オブジェクトのリファレンスの 3 つの入力があります。

この関数にスクリプト アクションを実行すると、エディタに小さなウィンドウが表示され、以下の入力値を設定できます。

エディタは、各入力が想定されている値の型と一致するかどうかを検証します。ただしこれは、入力が値を含むことや、特定のコンテキストに相応しい値であることを保証しません。そのため、スクリプトは未指定の入力値を処理して、ユーザーが提供した入力値を検証する必要があることに留意してください。