2026/07/07
レベル移動時のロード画面の作り方
(レベルパーシスタントとサブレベルの関係)
目次
初めに
レベルの作成、関係の説明
ロード画面の作成
レベルブループリント作成
初めに
注意として、レベルに関してちゃんと理解してから
メインのプロジェクトで実装するなりしたほうが安全かもしれません。
今回は、レベルが使えればどんなプロジェクトでもOKです。
レベルの作成、関係の説明
新しく「Lv_Main」を作ります。これをパーシスタンとレベルとして使用します。
このレベルを開いて、、
「ウィンドウ」たぶから
「レベル」をクリックすると、、、
レベルウィンドウが出てきます。
自分はここに置きました。
ウィンドウにパーシスタントレベルと表示されていますが
パーシスタンとレベルは、普段使っている「レベル」=「レベルパーシスタンと」で
これから作る「サブレベル」と区別するための別名です。
このLv_Main(パーシスタンとレベル)には、すべてのサブレベルに最低限必要な
オブジェクト(SkyLight、DirectionalLight、SkySphereなどなど)
を入れるのがいいようですが、すでにたくさんのレベル(ダンジョンや家など明確に分けといたほうがいいレベル)
を作っている場合は、最低限必要なオブジェクトを移行するか、
別に何も置かず各レベルごとで管理するでもOKだと思います。(読み込み速度が上がるだけ?かと)
必ずしもパーシスタントレベルに何か置かなければいけないわけではないと思います。
今回は以下のものを置きます。
新しく「Lv_1」、「Lv_2」を作ります。これはサブレベルとして使用します。
これらのレベルには以下のものを置きます。
注意として、そのまま置こうとすると意図していない結果になる可能性が高いです。
レベルウィンドウ内にあるレベルの名前が青色になっているレベルが、
現在編集しているレベルになり、
ほかの編集したい白文字のレベル名をダブルクリックすると、
ダブルクリックしたレベルの名前が青文字になり、このレベルを編集することになります。
「Lv_1」に何か置こうとしたときに、パーシスタントレベルが青文字になっていると、
その時に置いたものは、パーシスタントレベルに配置されます。
あと、レベルの表示、非表示も行いましょう。
この目のアイコンをクリックして表示、非表示を切り替えます。
この点に注意して配置しましょう。
「Lv_1」
「Lv_2」
二つのランドスケープのマテリアルは別々のものに変えておきます。(変化がわかるように)
「Lv_1」、「Lv_2」を「Lv_Main」のサブレベルに追加します
サブレベルは、さきっほど作ったパーシスタントレベルに追加することでサブレベルとして使用でき、
BPノードで「ロード」、「アンロード」するノードを使用して「表示、非表示」することができます。
主な「ロードノード」と「アンロードノード」
サブレベルを常にロードするかBPでロードアンロードするか決められます。
ブループリント=BPでロードアンロードする
常にロード済=常にロード
パーシスタントレベルは必ず常にロードされます。サブレベルのみ変えられます。
パーシスタントレベルとサブレベルの正体は、、、
レベルの表示、非表示だったのです!
「パーシスタントレベル=アクタ、サブレベル=コンポーネント」
厳密には違いますが、これと似たようなものなのかなと自分は理解しています。
「OpenLevel」ノードでレベルを変えると、どうやってもフリーズ、ロード画面がうまく表示されなかったりしますが、
「ロード、アンロード」ノードで表示、非表示すると、メインのレベル(パーシスタントレベル)を変えず、
ただレベル(サブレベル)を表示、非表示しているだけなのでフリーズが起きないわけです。
メインのレベル(パーシスタントレベル)を変える(「OpenLevel」する)ともちろんフリーズします。
とにかく「OpenLevel」を使わないように設計していきます。
「OpenLevelノード」
「Lv_Main」をプロジェクト設定で「ゲームのデフォルトマップ」に割り当てておきます。
このレベルのレベルブループリントにサブレベル(「Lv_1」、「Lv_2」)を切り替えたりするノードを書いていきます。
ロード画面の作成
レベルブループリントをにノードを書いていく前に、ロード画面を作成します。
新しくウィジェットブループリントクラスを作成して、、、、
名前は「WBP_Loading」にします。
画面を作成して、、、、、
フェードインさせたりして、、、、、、
ウィジェットのノードを書いて、、、
完成です!
まあ、これは好きなように作ってもらって、
レベルブループリント作成
レベルブループリントを以下のように書いていきます。
「Lv_Main」のレベルブループリントはいつも通り出せますが、
サブレベルの「Lv_1」、「Lv_2」は、レベルブループリントを開くのしたから編集できます。
(サブレベルをパーシスタントレベルとして開いて編集しても可能だとは思いますが、めんどうですよね)
「Lv_Main」
パーシスタントレベルでは主に各レベルのロードアンロードをします。
先ほどのとおり、パーシスタントレベルは常にロードしている(常に存在している?)
ので、パーシスタントレベルのレベルBPにキーイベントを実行しても、
しっかり機能してくれます。
ロード画面にアニメーションを設定する場合は、「delay」で調整するときれいになります。
これで各キーを押すとロード画面がうまく表示され、レベルが変わります!
お疲れさまでした!