こんにちは、株式会社Leon Gameworksの遠藤です。

今回は第5回で解説した「UIへの独自のメニューの追加方法」から、さらに一歩踏み込んだメニューのカスタマイズ方法について解説します。

また、C++を用いればカスタマイズの幅は大きく広がりますが、本記事ではブループリントのみでの実装方法を解説します。

記事の目次

    0:動作環境

    本記事はUE5.4.4を基に執筆しており、エディタの言語は「英語」でスクリーンショットを撮影しております。

    本記事で作成するツールのプロジェクト一式のデータは以下からダウンロードできます。

    今回のプロジェクトデータ

    1:準備

    まずは第5回と同様に、登録するメニューのアセットを作成していきます。

    メニューの実体として「EditorUtilityToolMenuEntry」を継承したEditor Utility Blueprint(以下、EUB)を作成します。

    ▲ 「EditorUtilityToolMenuEntry」を継承したEUBを作成

    アセット名は「EUB_MyMenu」とします。

    ▲ EUB_MyMenu

    作成したEUB_MyMenuを開き、Detailsから以下のように設定します。

    設定項目

    Name

    MyMenu

    Label

    MyMenu

    Style Set Name

    EditorStyle

    Style Name

    UnrealCircle.Thin

    ▲ メニューの設定

    次に、メニューを登録するためのEUBを「Editor Utility Object」を継承して作成します。

    ▲ 「Editor Utility Object」を継承したEUBを作成

    アセット名は「EUB_ResisterMenu」とします。

    ▲ EUB_ResisterMenu

    作成したEUB_ResisterMenuを開き、Run関数からメニューを登録する処理を作成します。

    ▲ メニューの登録

    第5回執筆時点から仕様が若干変わり、メニューの登録の際に「Get」ノードでToolMenuの参照を取得する必要がなくなり、「Add Menu Entry Object」ノード単体で登録ができるようになりました。

    これで準備完了です。
    作成したEUB_MyMenuの設定項目を編集してメニューをカスタマイズしていきましょう。

    2:メニューの登録

    既存の場所に登録

    第5回では新規に場所を作成してメニューを登録しましたが、今回は既存の場所に登録したいと思います。

    まずは前回と同様に登録場所を確認します。前回は「DefaultEditorPerProjectUserSettings.ini」を編集するかたちで編集モードに変更しましたが、今回はコンソールコマンドからモードを切り替えてみます。

    コンソールコマンドから「ToolMenus.Edit 1」を実行すると編集モードが有効になります。無効にするときは「ToolMenus.Edit 0」を実行しましょう。

    ▲ コンソールコマンドの実行

    今回はメインメニューの[Tools]タブに追加してみます。編集モードで見てみると、「LevelEditor.MainMenu.Tools」に追加すれば良いことが確認できます。

    ▲ 編集モードで追加場所を確認

    EUB_MyMenuを開き、Detailsから[Menu]に場所の文字列を入力します。

    ▲ メニュー場所の指定

    EUB_ResisterMenuを右クリックし、[Run Editor Utility Blueprint]からメニュー登録処理を実行します。

    ▲ メニュー登録処理を実行

    メインメニューの[Tools]を開くとメニューが登録されているのが確認できます。

    ▲ メニューが登録されているのを確認

    表示位置の変更

    メニューを登録できましたが、セクションを指定しないままだと一番上のセクションに表示されてしまうため、[PROGRAMMING]セクションに表示されています。

    EUB_MyMenuを開き、[Section]からセクション名を「Tools」に変更してみましょう。

    ▲ セクション名の指定

    すると表示位置が変わり、[TOOLS]セクションに表示されました。

    ▲ セクションの変更

    さらに、EUB_MyMenuのDetailsから[Insert Position]を以下のように設定します。

    設定項目

    Name

    FindInBlueprints

    Position

    After

    ▲ [Insert Position]の指定

    すると、以下のように表示位置が[Find in Blueprints]の1つ後ろになりました。

    ▲ [Insert Position]で変更された表示位置

    [Insert Position]を指定すると以下のように表示位置を変更することができます。

    設定項目

    説明

    Name

    挿入する項目の基準

    Position

    Default: セクションの最後

    Before: “Name”で指定した項目の1つ前

    After: “Name”で指定した項目の1つ後

    First: セクションの最初

    サブメニューの作成

    次に、サブメニューを作成していきます。

    EUB_MyMenuと同様に「EditorUtilityToolMenuEntry」を継承したEUBを作成し、アセット名は「EUB_MySubMenu」とします。

    ▲ EUB_MySubMenu

    アセットを開き、Detailsから以下のように設定します。

    設定項目

    Menu

    LevelEditor.MainMenu.Tools.MyMenu

    Name

    MySubMenu

    Label

    MySubMenu

    ▲ MySubMenuの設定

    次に「EUB_MySubMenu」を開き、[Is Sub Menu]にチェックを入れます。このチェックを入れたメニュー項目はサブメニューを持てるようになります。

    ▲ [Is Sub Menu]にチェック

    最後に「EUB_ResisterMenu」でEUB_MyMenuと同じように登録処理を追加します。

    ▲ サブメニューの登録処理

    実行すると以下のようにサブメニューが登録されました。

    ▲ サブメニュー

    3:まとめ

    今回は独自メニューのカスタマイズ方法について少し踏み込んで解説しました。

    まだ解説しきれていない箇所も多く、今後の連載で解説したいと思いますので、引き続きご愛読いただけたら嬉しく思います。

    本記事で作成したツールのプロジェクト一式のデータは以下からダウンロードできます。

    今回のプロジェクトデータ

    株式会社Leon Gameworks

    ●公式サイト
    www.leon-game.co.jp

    ●X(Twitter)
    @Leon_Gameworks

    トンコツ(遠藤俊太)

    ●トンコツ開発ブログ
    shuntaendo.hatenablog.com

    ●X(Twitter)
    @tonkotsu3656

    TEXT_トンコツ(Leon Gameworks)
    EDIT_小村仁美 / Hitomi Komura(CGWORLD)、オムライス駆