Unreal Engine 5で開発する過程で、処理が実行される順序で少しハマったオーバーレイパネル内のスロットの順序を調整する方法を備忘録的に投稿します。
オーバーレイパネル内スロットのZOrder設定
Unreal Engineのウィジェット内でパネルを使って他のウィジェットを追加する方法があります。
その際に、追加した順番で前面に描画されるルールがあるようで重ね順を気にする場合には追加する処理に気を使う必要があります。
しかし、実行中に重ね順を変更したい場合にはパネルを選ぶ必要があります。
キャンバス(Canvas)パネルの場合は[ZOrder]設定で重ね順を変更できますが、オーバーレイ(Overlay)パネルには[ZOrder]設定がありません。
今回も、ゲームで使われるインベントリのような仕組みを作っている時にハマりました。
実装中にレイアウトパネルを変更するほど酷な作業はありません。
色々調べて、[ZOrder]を使わずに重ね順を変更する手順がありました。
パネルに他のウィジェットを追加する際に[Slot]という仕組みがあります。追加するとウィジェットのインスタンスが、配列のように[Slot]で管理されます。
先述の “追加した順番で前面に描画されるルール” が、そのまま[Slot]の順序になっているので、この順番を変更します。
最前面にする場合は、こんな感じでノードを組みます。
内容は簡単で、最前面にしたいウィジェットのインスタンスを見つけて[Remove Child]ノードで一旦削除します。
その後に[Add Child to Overlay]ノードで、削除したウィジェットのインスタンスを追加します。
この操作で[Slot]の最後に追加されるので目的のウィジェットが最前面に表示されます。
一旦削除して再登録になるので、ウィジェットの設定がリセットされてしまうので[Horizontal Alignment]などレイアウト設定は、削除前に変数などに保存して再登録後に再設定する流れになります。
まとめ
今回は、短い記事ですが、Unreal Engine 5でオーバーレイパネル内のスロットの順序を調整する方法について書きました。
Overlayパネルには[ZOrder]が無いため、ウィジェットの重なりを調整する場合には[Slot]の追加順を再設定することで前面や背面になる順序の調整が可能です。
Unreal Engine でオーバーレイパネルで、ウィジェットの重ね順を調整したい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。

