しんばりん日記

ue4を使ってのゲーム制作ブログです。間違いを指摘していただけると助かります!

テンプレートプロジェクトを弄ってみた(3)

Blender操作みないでなんとかなると思ったけど何一つできなくてワロタ...

今回はレベルストリーミングを使用して、レベルを切り替える話。

これを使用することで、タイトルや本編、ステージ切り替え時にロード画面を

挟むことができるはず!

あとはゲーム中に保持し続けたいコンポーネントなんかをメインレベルに配置できると

思うんだけどなぁ。

レベルストリーミングの取り扱いは先人たちが詳しいので、ここ以外で検索を!

 

ひとまずタイトルレベルを[パーシスタントレベル]として、

サブレベルに3rdパーソンを配置。

その状態でEnterキーを押した際にLoadStreamLevelを呼んでみたら...

(関数のMake Visible Aftor Load はtrueにしています)

f:id:sinvary:20181223024231p:plain

まぁこうなりますよね!

実行画面をみて確かに!と思いましたし...

この時に思ったのが、非表示状態は入力受け付けているのかと。

(非表示でも処理が動いていたら、ゲーム開始直後から敵に囲まれたりなんて...)

Make Visible Aftor Loadをfalseにしたらそもそもレベルが表示されていなかったので

そんな心配はいらなかったのですが...

いろいろ考えているとレベルの親てきなものが欲しくなってきました。

パーシスタントレベル専用のレベル設置したほうが楽そう...

ということで、新たにパーシスタントレベル用レベルを作成し、(Persistent)

タイトル、本編をサブレベルに設置しなおし。

ゆくゆくはパーシスタント用のレベルにローディングUIを設置することになりそう。

 

ひとまずTitleで設置していたEnterキーでLevelStreamingする処理を、

Persistentに移しました。(Enterキーで3rdパーソンレベルへ)

今度は、Enterキーを押したらTitleのレベルを非表示するように処理も挟んでいます。

 

実行時(タイトルシーンを[常に呼び出し]に変更)

f:id:sinvary:20181223030212p:plain

Enterキー押下後

f:id:sinvary:20181223030327p:plain

あっれー、まだ残ってる...

レベルウィンドウを見ても、きちんとタイトルシーンは非表示になっている...

 

というところで気づきました。

コントローラーに対してAddViewportしているので、

コントローラーが変わらない限り(急に消えたりしない限りとか?)

UIは残るんですね。多分、おそらくですけど。

レベル遷移しても消えないでほしいもの、消えてほしいもの。

それを管理するマネージャークラスの作成したくなってきました!

...まだはやいかな...