|
執筆バージョン: Unreal Engine 5.7
|
パラメータを渡すような便利機能を作る時に、ある程度の使いやすさは確保したい。
そのために、詳細パネルのようなUIを活用したいけど、似たようなUIをWidgetで作るのは面倒臭い。
そんなプログラマの三大美徳の「怠慢」をお持ちのあなたにピッタリなのが、ShowObjectDialogです。
今回はShowObjectDialogを活用した便利機能の作り方を紹介します。
ShowObjectDialog とは?
ShowObjectDialog は、指定したオブジェクトのプロパティを 詳細パネルと同じ UI でダイアログ表示 してくれるノードです。
Widget を一から作らなくても、プロパティを定義するだけでユーザーが値を編集できる設定ダイアログを手軽に用意できます。
使用方法
例として、プロパティStringを定義したEditorUtilityObjectを用意し、Runで実行します。 EditorUtilityObjectのプロパティStringを編集し、その結果を表示します。
プロパティの定義

実行処理

実行結果
詳細ウィンドウの表示

OK/Cancel ボタンを押すとダイアログが閉じ、次の処理に進みます。
メッセージボックスの表示結果

パラメータ
| パラメータ名 |
内容 |
| Title |
ダイアログのウィンドウタイトルに表示される文字列 |
| In Out Object |
プロパティを表示・編集させたいオブジェクト |
| Options / Show Object Name |
ダイアログ上部にオブジェクト名を表示するか |
| Options / Allow Search |
プロパティの検索欄を表示するか |
| Options / Allow Resizing |
ダイアログのサイズ変更を許可するか |
| Options / Min Width / Min Height |
ダイアログの最小サイズ |
| Options / Value Column Width Ratio |
値の横幅の比率 |
返り値
Return Value にはユーザーが OK を押したか(true)、キャンセルしたか(false)が返ってきます。
注意点
例ではEditorUtilityObjectのSelf を渡しています。
デフォルトでいくつかのプロパティを持っているクラス・ブループリントを In Out Object につなげると、不要な項目までダイアログに表示されてしまいます。

変数を private に設定しても詳細パネルには表示されてしまうことがあるため、以下の方法で対処してください。
対処法 1 Category を定義して Hide Categories に指定する
非表示にしたい変数をまとめる Category を定義しておき、Blueprint の「Class Settings」にある Hide Categories にそのカテゴリ名を指定します。
指定したカテゴリに属する変数はダイアログ上に表示されなくなります。
対処法 2 設定専用のオブジェクトを別途作る(推奨)
例ではEditorUtilityObjectを継承しましたが、設定用のUObjectのBlueprintを別に作成し、ユーザーに触れさせたいプロパティだけを持たせるオブジェクトを作成してください。
余計なプロパティが一切ない、シンプルなダイアログになるのでこちらがおすすめです。
まとめ
ShowObjectDialogはちょっとした設定を受け取りたいだけな場面で非常に重宝します。
Widget 制作のコストをかけずに使いやすいUIが手に入るのでぜひ活用してみてください。