2016-04-18 5 views
5

私の場合です。libGDX:毎回画面を再利用するか、新しいインスタンスを作成する方が良いでしょうか?

  1. MainMenuScreen
    • がGameScreenに切り替えるための「スタート」ボタンを持っている:私は、画面の3つの異なる種類があります。また、プレイヤーは基本的なゲーム設定を変更することができます。
  2. GameScreen
    • 実際のプレイ可能なゲーム(プレイヤーキャラクタが実行され、ジャンプ)。アニメーションを再生し、その後、プレイヤーが(すなわちGameScreenに切り替えて)再びゲームを開始するか、メインメニュー(MainMenuScreenにすなわちスイッチ)を返すことができますメニューを表示
  3. GameOverScreen
    • 画面。

が、私は裕福変数で私の画面を保存して、私は画面を切り替えるときにそれらを再利用アム、またはそれは私がそれで終わりだとき、各画面を処分し、その後の新しいインスタンスを作成することをお勧めします私は画面の種類に切り替えるつもりですか?

そして、スクリーン交換が頻繁に行われる場合(ファイナルファンタジーやポケモンのようなゲームでは、オーバーワールドスクリーンとバトルスクリーンの間のように)、答えが異なるでしょうか?

ありがとうございます!

答えて

5

私は、頻繁に使用されるScreenを再利用して、それを処分して再作成することをよく考えています。Screenはよく使用されていません。それらが相互に直接接続されているようGameScreenGameOverScreenMainMenuScreenはすべて、再利用されなければならない
はあなたの例では:
とすぐにプレイヤーがゲームを起動すると、それは彼が死ぬことを、可能です。次にGameOverScreenが表示され、その直後にMainMenuScreenが表示されます。したがって、ユーザーは手動でScreenに切り替える必要はありません。
OptionsScreenの代わりに、毎回廃棄して再作成することができます。通常は、OptionScreenを数回開くだけです。また、それは他のScreenに直接接続されていませんが、ユーザーはOptionScreenを開くためにゲームを強制的に強制する必要があります。 しかし、あまりにも多くのScreenがない限り、再利用は問題ではありません。
2番目の例では、Screenがさらに頻繁に使用されるため、再利用する必要があります。

EDIT:
@EssEllDeeが述べたように、あなたもhide()show()の使用をしなければなりません。これらのメソッドは、Screenを切り替えるときにLibgdxによって呼び出され、重いリソースを破棄/再作成するために使用できます。たとえば、GameOverScreenに切り替えて再ロードしたときに、GameScreenに切り替えると、ゲームに使用されたTextureを処分することができます。

+2

これに加えて、自動的に呼び出される 'onHide()'と 'onShow()'メソッドを利用してください。 – EssEllDee

+2

@EssEllDeeあなたは正しいです。このメソッドは、「重い」リソースを破棄/再作成するために使用できます。 – Springrbua

+0

答えをありがとう! – hithere

関連する問題