2017-10-25 11 views
1

もう一つの問題です。libgdxの異なる画面を持つゲームでスプライトを処理するための最良の方法

私はlivesRemainingのようなフィールドを持つスプライトを持っています。

ゲームのメイン画面で、私は落ちて、setScreenメソッドを使用して、画面を "Lives Remaining"画面に切り替えます。私の問題は、livesRemaingフィールドが失われていることです。

私の質問は、これらの「グローバルゲーム変数」を処理する最善の方法であり、画面間で移行する必要があります。

万一I:

  1. ゲームクラス内の1つのスプライトを作成し、異なる画面にこれを渡しますか?
  2. 新しいスプライトをすべての画面に作成し、メインゲームクラスの「グローバルゲーム変数」を維持しますか?

これに最善のアプローチがあるのか​​、まさに味の問題なのかわかりません。

何か提案がありがとうございます。

ありがとうございます!

答えて

1

キャッシュを使用すると、オブジェクトの作成や破壊(「リアルタイム」ゲームのガベージコレクタによりJavaで高価になる)を避けることができます。そのような問題を避けるために、すべてのゲームデザインを処理するためには、より良いデータ構造が必要なようです。あなたの選択肢1は良いアプローチに最も近いアプローチですが、それは一般的なデザインに依存します。

+0

。私はオプション1がパフォーマンスの面で最も理にかなっていると思います。スプライトオブジェクトにこれらの変数を保持することがより多くのOOPになります。また、変更するときに画面に渡すものに柔軟性があります。 –

0

あなたの質問は非常に興味深いものでした。なぜなら、私は問題/疑問を抱いてしまったからです。 ECSシステムのエンティティ)システムが作成された場合、私はスプライトの値を次の画面に渡してしまったことに気付きました。プレイヤーのグローバル変数を作成します。なぜなら、世界がプレイヤーの上で回転し、プレイヤーの人生の情報を保存することが重要であることがわかっているからです。フランコッグが話したように、さまざまな方法でシステムを持っていますが、使用するデザインとデザインのパターンによって異なります。

1

私は自分のゲーム、gamescreen、およびゲームカメラへの静的な参照を含む静的クラスを持っています。

私はそうしています。あなたはゲームのどこのコンポーネントにでもアクセスできます。

私はこの1つにあなたに同意IE game.player それとも gamecamera.unproject()

関連する問題