Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE5 BPノンブロッキングコンテキストメニューについて

UE5.3のPreview 1の配信が先日開始されました。内容は相変わらず非常に大きいので、ロードマップからぜひ確認してください。

さて、UE5.3を少し触ってみたところ、真っ先に気づいたのがブループリントでノードを検索する際に右クリックを行うとでてくるコンテキストメニューの動作です。
右クリックしてみるとわかりますが、普段だと一瞬だけ引っかかるような動作があるのですが、それが瞬間的に表示されるようになっています。

この機能、実はUE5.2から搭載されたもので、標準的には有効化されていない機能でしたが、UE5.3からはどうやら標準的になったようです。少し特徴のある機能なので解説してみたいと思います。

ノンブロッキングコンテキストメニュー

この機能はノンブロッキングコンテキストメニューと呼ばれるもので、これまでBPのノード検索を行う際に表示されるメニューは、その都度読み込みを行っており、プロジェクトによっては読み込み時間が無視できないものとなっていました。またUnreal Engine自体の機能が肥大化しており、徐々にコンテキストメニュー表示が遅くなっていたという問題もありました。これに対応する形で導入されたのが、ノンブロッキングコンテキストメニューだと思います。

ノンブロッキングコンテキストメニューは名前の通りコンテキストメニューの表示を動的に組み上げて、少しずつ表示していきます。これによりメニュー表示のレスポンスがよくなります。このメニューの表示については若干ですが、カスタマイズできるようになっています。

UE5.3以降の『エディタの環境設定』から『ブループリントエディタの設定』を開き、『ノンブロッキングコンテキストメニューを有効化』となっている箇所から下の設定に注目します。ノンブロッキングコンテキストメニュー自体を切りたい場合はこの設定自体をオフにしましょう。

それ以外にも設定がいくつかあります。『コンテキストメニュー:選択アセットにバウンド前アクションを含める』をチェックすると、それ以下の2つの設定を行うことが可能です。

まず上記設定をチェックすることで、コンテンツブラウザで互換性のあるアセットを選択(スタティックメッシュなど)していると、『Add Component』がアセットにバインドされた状態で追加されるようになります。例えば以下のような状態です。

チェックが外れている場合にはこの項目が検索しても表示されないことになります。

次に『コンテキストメニュー:バウンド前アクション:単一選択に制限』を設定するとアセットが単一選択された時にのみ上記検索に引っかかるようになります。以下の画像はチェックをオフにしているので、複数アセットが検索に引っかかる状態です。

最後に『コンテキストメニュー:バウンド前アクション:選択アセットを常にロード』ですが、こちらはメニューに追加する際に選択状態のアセットを常にロード状態にしておくので、モノによってはロード時間によってメニューの表示に時間かかってしまいます。以下の画像は設定をオフにしているので5つアセットを選択していますが、メモリに読み込まれているのが2つのみなので、それしか表示されていない状態です。

と、いうように表示されるものが変わったり、メニュー表示時間も変わってくるので、プロジェクトによってカスタマイズするといいでしょう。基本的にはデフォルトのままで問題ないと思います。

最後に『コンテキストメニュー:ノンブロッキングのフレームごとのしきい値(ミリ秒)』という設定があります。この数値が高いほどメニュー構築までの時間が速くなりますが、レスポンスが遅くなります。数値が低いほどレスポンスはよくなりますが、メニュー構築までの時間がかかるようになります。基本的にはデフォルトの50ミリ秒でちょうどいいと思いますが、カスタマイズしてみるのもよいでしょう。

以下は200ミリ秒と1ミリ秒を設定した際の比較です。

小さい変更かもしれませんが、普段からよく使う部分でもありますのでこういうカスタマイズができるのはありがたいですね。