♻️

【UE5】EditorUtilityWidgetを使ってランタイム中に別のレベルをロードさせる

2024/12/03に公開

概要

この記事は一人アドベントカレンダー by ダリアの3日目の記事です。

今回は下記のようにランタイム中に別のレベルを読み込ませる方法についてまとめた記事になります。
https://x.com/daria_nicht/status/1855830941148844350

環境

UE5.4.4

やり方

まずEditorUtilityWidgetを作ります。

レイアウト

レイアウトはこのようになっています

クラス設定

次に、BPを開いたらまず設定にあるクラス設定Is Enable In PIEにチェックを入れます。

これにチェックを入れないとPIE中にボタンが押せなくなるためです。

BP

BPの処理の中身はこのようになっています。

まず、PreConstructでレベルアセットの変数をSinglePropertyViewの対象にして、レベルアセットをコンテンツブラウザから自由に選択できるようにします。

戸惑ったのは格納する変数の型の設定の仕方でした。

レベルを開く関数で使う引数はワールド型という型らしいのですが、この型がワールドやWorldと検索しても候補に出ませんでした。

仕方ないので、ノードを伸ばして変数化で変数を作りました。(この型の作り方を知ってる方がいれば教えていただけると幸いです)

次にOnClickedで現在再生中のPIEを取得し、WorldContextObjectとして渡すことで、ランタイム中にレベルを読み込ませるようにします。

以上で設定は終わりです。

設定ができたら実行してみて、冒頭の動画のようにレベルアセットが選択でき、その状態でボタンを押したらレベルが切り替われば成功です。

Discussion