自分へのメモも兼ねて、Qita記事を投稿します。
今回は、カスタムのメニューについてになります。
情報はいくつかあったのですが、情報の整理と選定に時間が取られ、今回の実現に一番合ってそうな方法まで落とし込むのに時間がかかりました。
今回やりたかった事
作成したエディタユーティリティウィジェットをメニューからも呼び出せるようにする事です。
- 独自のメニューを追加する
- 自作したエディタユーティリティウィジェットを呼び出す
- エディタユーティリティウィジェット
C++からメニュー追加する事も可能ですが、エディタで後から追加したエディタユーティリティウィジェットを呼び出す事ができないという問題がありました。
検証環境
UnrealEngine5.3.2
作業手順
- メニュー登録用ブループリントを作成
- Run走らせ用のブループリントを作成
- 実行したいEUWの作成
- Configの登録
基本的には、こちらのキンアジさんの記事で説明されている事と手順は同じです。
ですので、細かいノードの説明はしません。
最後に、参考したURLを貼ってあります。
複数のサブメニューの登録の仕方が読み取れなかったので、そこは今回、検証したところです。
メニュー登録用ブループリントの作成
メニューに独自のメニューを登録処理を行うブループリントになります。
最終的には、Startupも登録して、エディタ起動時に呼ぶようにしておきます。
エディタユーティリティブループリントでEditor Utility Objectで作成します。
※写真の場合は、『ExecuteAddMainMenuCustomLabel』と『ExecuteAddMainMenuCustom_B_Label』二つのメニューを登録しています。
『EUB_AddMainMenuCustom』『EUB_AddMainMenu_B』と『EUW_AddMainCustom』『EUW_AddMainCustom_B』がありますが、呼び出しの検証で識別する為、ブループリントが2パターン用意してあります。
『EUB_AddMainMenu_B』は『EUB_AddMainMenuCustom』を複製したもので、『EUW_AddMainCustom_B』は、『EUW_AddMainCustom』を複製したものです。
Wigetトリガー用のブループリントを作成
メニューからコールバックで『Widget』を起動する処理を行います。
直接、エディタユーティリティウィジェットを呼び出すのが無理そうだったので、エディタユーティリティブループリントがキックします。
エディタユーティリティブループリントでEditor Utility Objectで作成します。
『EditorUtilityToolMenuEntry』を親クラスした方法と2種類ある
ちなみに、EUWでもEUBと同様に、Run(イベント)をオーバーライドできる為、『メニュー登録用ブループリント』から『EUWのRunを実行』する事はできます。
実行したいEUWの作成
実際に、メニューから立ち上げたいWidgetになります。
エディタユーティリティウィジェットを作成します。
呼び出しの確認テストなので、ボタンを一つ置いて、PrintStringを呼び出すだけです。
デザイナー
グラフ
Configの登録
『メニュー登録用ブループリントの作成』をStartupメニューに登録する事で、エディタ起動時にメニューを登録するようにしておきます。
[/Script/Blutility.EditorUtilitySubsystem]
+StartupObjects=/Game/MainMenuCustom/AddMainMenuCustom_ResisterMenus.AddMainMenuCustom_ResisterMenus
おまけ C++でやる
こちらは、C++で実現している方が居たので、参考情報として載せておきます。
今回の実現とは、やり方がマッチしなかったので、使用しませんでした。