プロジェクトが開かれると必ず定義済みのブループリント グラフが実行されるように Unreal Editor を設定することができます。これにより、プロジェクトを開いたユーザーやプロジェクトを開く際に使用したコンピュータに関係なく、ユーザーが必要とする方法で編集環境を確実に設定することができます。たとえば、コンテンツ開発パイプラインのニーズや制作基準に応じて、作成した編集システムを初期化したり、コンテンツのロードや変更を行ったり、ディスクからアセットを再インポートして最新の変更を取得したり、カスタムの Editor Utility Widget を開いたり、編集セッション中に発生する可能性のあるイベントにバインドしたりすることが必要になる場合があります。
このページの手順では、エディタ専用のブループリント クラスを スタートアップ オブジェクト として登録することで、起動されると必ず Unreal Editor がそれらのオブジェクトで関数を呼び出すようにする方法を説明します。
この手順では、EditorUtilityObject から直接的または間接的に派生する Editor Utility ブループリントや Editor Utility ウィジェットを操作します。
ステップ
-
EditorUtilityObject から派生した Editor Utility ブループリントや Editor Utility ウィジェットがまだない場合はウィジェットを作成します。たとえば、この手順では新しい Editor Utility ブループリントを作成します。
-
コンテンツ ブラウザ を右クリックして、[Editor Utilities (エディタ ユーティリティ)] > [Editor Utility Blueprint (エディタ ユーティリティ ブループリント)] を選択します。
-
親クラスを選択します。[EditorUtilityObject] を選択するのが妥当ですが、[EditorUtilityObject] から派生する他のクラスを選択することもできます。[Create (作成)] をクリックします。
-
新しいクラスにわかりやすい名前を入力して、「Enter」 キーを押します。
-
-
ブループリント クラスをダブルクリックしてブループリント エディタで開きます。
-
クラスの Run 関数をオーバーライドします。
これを行うには、[Override (オーバーライド)] ボタンが表示されるまで、[My Blueprint (マイ ブループリント)] パネルの [Functions (関数)] グループにカーソルを合わせます。[Override (オーバーライド)] ボタンをクリックして、ドロップダウン リストから [Run (実行)] を選択します。
ブループリント エディタにより、イベント グラフで新しい Event Run ノードが作成されます。ここでトリガーしたいブループリント ロジックを追加します。
たとえば、この実装では関数が呼び出されたことを示すメッセージをログに書き込み、エディタのデフォルトのスタートアップ レベルの中央にキューブをスポーンします。
-
ブループリント クラスを コンパイル して 保存 します。
-
アンリアル エディタを終了します。
-
「
Project/Config/<platform>/DefaultEditorPerProjectUserSettings.ini
」のプロジェクト フォルダにある「DefaultEditorPerProjectUserSettings.ini
」ファイルを確認します。このファイルをテキスト エディタで開きます。 -
ファイルの次のセクションを確認します。
[/Script/Blutility.EditorUtilitySubsystem]
セクションがない場合は作成します。
-
スタートアップ オブジェクトとして機能させる各ブループリント クラスごとに、そのクラスへのパスを
StartupObjects
配列の新しい値として追加します。/Game/
でパスを開始し、コンテンツ ブラウザ に示すブループリント クラスへのパスを追加します。オブジェクト名の末尾にピリオド (.
) を付けて、オブジェクト名を繰り返します。たとえば、上記の手順 1 で作成したオブジェクトを登録するには、次のように指定します。
[/Script/Blutility.EditorUtilitySubsystem] StartupObjects=/Game/BlueprintUtilities/MyStartupObject.MyStartupObject
複数のスタートアップ オブジェクトを登録する必要がある場合は、各追加行の先頭にプラス文字 (
+
) を挿入します。たとえば、3 つのスタートアップ オブジェクトを含む構成は次のようになります。[/Script/Blutility.EditorUtilitySubsystem] StartupObjects=/Game/Folder/MyClass.MyClass +StartupObjects=/Game/AnotherFolder/MyOtherClass.MyOtherClass +StartupObjects=/Game/AnotherFolder/MyThirdClass.MyThirdClass
-
.ini
ファイルを保存して閉じます。 -
アンリアル エディタを再起動して、プロジェクトをリロードします。
最終結果
プロジェクトをリロードすると、スタートアップ オブジェクトとして特定した各ブループリント クラスのインスタンスがエディタのユーティリティ サブシステムにより自動的に作成されます。インスタンスごとに、Run 関数のカスタム実装が呼び出されます。
たとえば、上記の手順で実装された Run 関数では、次の 2 つの結果が得られます。
-
[Output Log (アウトプット ログ)] へ行が出力される
-
レベルの中央にキューブが新しくスポーンされる
エディタ イベントにバインドする
スタートアップ オブジェクトの便利な使用方法の 1 つは、ユーザーが Unreal Editor でプロジェクト コンテンツを操作するときに発生する可能性がある他のイベントにブループリント クラスのカスタム イベントをバインドすることです。プロジェクト コンテンツがユーザーによって開かれるたびにスタートアップ オブジェクトが確実に呼び出されるため、一貫した編集操作を保証することができます。
たとえば、この Run 関数の実装では、エディタが新しいアセットをインポートするたびに Import Subsystem によってトリガーされるイベントにバインドします。この場合、アセットの名前が画面とログに出力されます。また、返された新しいアセットに関する情報を使用して、新しいアセットの名前またはフォルダの場所がプロジェクトで使用する命名規則およびコンテンツ規則と一致することを検証するなど、追加の手順を実行することができます。スタートアップ オブジェクトにこのような確認を組み込むことで、プロジェクトにコンテンツを提供するすべてのユーザーに対して同一の検証手順が確実に実行されます。
Bind Event to... ノードの Event 入力を左にドラッグして、[Add Event (イベントの追加)] > [Add Custom Event (カスタム イベントを追加)] を選択して、上記の In Factory や In Created Object などの追加入力を公開するカスタム イベント ノードを取得します。
スタートアップ オブジェクトは、エディタの起動時に存在する他のオブジェクトにのみバインドできます。さらに、バインドされたオブジェクトがメモリを解放すると (レベルを閉じて、再度開いた場合など)、このバインドは失われます。そのため、上記の例に示すサブシステムのように、編集セッション全体で利用できるオブジェクトにバインドすることが最も確実です。
ブループリント イベントへのバインドの詳細については、「イベント ディスパッチャー」および「イベントをバインドするおよびイベントのバインドを解除する」を参照してください。サブシステムの詳細およびサブシステムへのアクセス方法については、「サブシステムをプログラミングする」を参照してください。