web-dev-qa-db-ja.com

Phaser3シーンの遷移

Phaserは初めてですが、クレイジーなプロジェクトを開始する前に、どのように開始すればよいかを知りたいので、シーンを切り替えます。開始、起動、切り替え、実行、再開、一時停止など、いくつかの機能があることがわかりました...

たとえば、メニューとゲームの2つのシーンが必要だとします。メニューから起動し、ゲームシーンに移動したいのですが、ボタンをクリックするとメニューシーンに戻ります。 start関数を呼び出すことでこれを実現しましたが、すべてのinitpreload、およびcreate関数が毎回呼び出されるため、すべてをロードしていることに気付きました。画像、すべてのリスナーを何度も何度も設定します。

これは間違っているようですが、起動機能または切り替え機能を使用して一時停止および再開する必要がありますか?しかし、どうすれば前のシーンを非表示にできますか?

前もって感謝します。

5
franmcod

わかりました、これが取引です。フェイザー3では、開始機能は、新しいシーンを開始するときに、実際には前のシーンをシャットダウンします。これが、毎回init、preloadextが表示される理由です。ただし、代わりにシーンを「起動」すると、シャットダウン、再起動シーケンス全体が実行されません。それらを上または下に移動したり、入力を受け取るかどうかを設定したりできます。ただし、注意してください。フェイザー3.16以降、シーンのスリープまたは一時停止によって更新がシャットダウンされることはありません。その結果、シーンを起動してスリープすると、基本的には、実際にはスリープしていないのに、スリープしていると言ってフラグを設定する以外に何もしません。したがって、更新処理は起動されたシーンで続行されます。最初にある種のフラグを使用して更新を短絡することができますが(これは私が頼りにしたことです)、もう1つの落とし穴はカメラのサイズです。したがって、すべてのシーンは同じカメラサイズである必要があります。そうしないと、レンダリングされ(「スリープ」している場合でも)、ディスプレイが台無しになります。つまり、最終的には、スリープと一時停止が実際に機能するまでは厄介になります。

0
Cary G.