【UE5】Editor Utility Widget (EUW) の作成方法
プログラマーの尾関です。
今回はゲーム開発中に役立つ Editor Utility Widget (EUW) の作り方を説明します。
- 動作確認: UE5.6.1
Editor Utility Widget (EUW) とは
Unrealのエディタの機能を WidgetとBP で拡張できるもので、Unityで言うエディタ拡張のようなものです。
特徴
EUWには以下の特徴があります。
- PIE (プレイ中) でなくても動作する
- アセットの操作ができる (保存やReimportなど)
- 特殊なWidget (Detail View, Property View) が使える

例えばこのようなデバッグ機能を用意し、エディタ編集中やPIE実行中に呼び出すことが可能です。
Editor Utility Widget の作成手順
アセットの作成
アセットは「エディタユーティリティ > エディタユーティリティウィジェット」から作成できます。

ルートウィジェットはひとまず “スタックボックス” としておきます。(“グリッドパネル” だと自動で Widget が並びます)

アセット名はひとまず “EUW_Test” としておきます。

EUWの編集
“EUW_Test” を開いて、 “Editor Utility Button” を配置して、その下にテキスト(ブロック)を配置します。

テキストブロックには「Hello」とテキストを入力しました。


そして Editor Utility Button を選んで詳細から「Is Variable」にチェックを入れます。

するとクリックイベント (On Click)が選べるようになるので、「+」ボタンをクリック。

クリックイベントに "Print String" を接続します。

コンパイルを実行しておきます。

EUWの実行
EUWを実行するには右クリックして「エディタユーティリティウィジェットを実行」を選択。

するとタブに「EUW_Test」が追加され、さきほど追加したボタンが表示されます。

"Hello" ボタンをクリックすると、出力ログに "Hello" と出力されました。

EUWのタブですが、エディタの左側にドラッグ&ドロップしておくと、使いやすくて便利かもしれません。

EUWに何を配置するのが良いか
EUWに何を配置するのかはプロジェクト次第ですが、個人的にはまず Widget Switcherを使ってタブを作ると良いかなと思います。


他には コンソール変数を変更するON/OFFボタンやレベル遷移を行うボタンも以外と便利です。
EUWからレベル遷移するには、良い方法が見つからなかったので、"Execute Python Script" ノードを使って、Unreal Python から遷移を行うというやや強引な方法で対応しました。

import unreal
unreal.EditorLevelLibrary.load_level("/Game/VRTemplate/Maps/VRTemplateMap")上記は、"/Game/VRTemplate/Maps/VRTemplateMap" のレベルに遷移する方法です。
Tips: Editor Utility WidgetをPIE実行時でも利用可能にする方法
ちょっとしたTipsとして、Editor Utility Widgetは初期設定では、PIE実行中の場合、ボタンを押したりできなくなります。

PIE実行中でも EUWを使える要するには、対象の EUWを開いて「グラフ > クラス設定 > 詳細」から「Is Enabled in PIE」をONにします。

おしまい
以上、簡単な説明でしたが、Editor Utility Widgetの作成方法でした。
この情報がデバッグ機能の作成に役立てれば幸いです。

