2012-01-15 7 views
0

現在、XNAベースのスペースインベーダーゲームにスクリーンロジックを追加しようとしています。XNAゲームのさまざまなレベルで複数のSpriteBatchesを使用してコンポーネントを残存させない

私の問題は、次のとおりです。

各画面は、それがGameComponentsManagerとして使用CompositeDrawableComponentインスタンスの助けを借りて自分のゲームコンポーネント(スペースシップ、EnemyMatrixなど)です管理しています。

各ゲームコンポーネントには、追加のゲームコンポーネントが含まれています(つまり、Bulletを保持するSpaceShip)。そのため、独自のGameComponentsManagerインスタンスが含まれています。

各GameComponentsManagerには、すべてのコンポーネント用のSpriteBatchが含まれています。つまり、PlayScreenはSpaceShipにSpriteBatchを使用し、各SpaceShipは固有のSpriteBatchを使用します。

結果として、SpaceShipのコンポーネントは、単に私の場合は背景であるScreenのコンポーネントの背後に描画され、ユーザーには見えません。

どうすればこの問題を解決できますか?

+0

答えがあまりにも簡単ですが、最初に画面のスプライトバッチを描画してみましたか?これは、レベルが船上に雲や類似物を表示することができないという問題を抱えていますが、複数のバッチを使用し続ける場合は... – Elideb

答えて

1

複数のSpriteBatchを使用しないでください。

すべてのクラスにSpriteBatch変数を保存できますが、毎回新しいSpriteBatch変数を宣言する代わりに、1つ1つの変数を渡してください。この時点で変更する必要があるのは、開始と終了が一度だけであることを確認することです。描画順序をよりよく制御できるようになります。レイヤー深度を使用することも、手動で正しい順序で描画することもできます。

+0

Hey Scott、あなたのバッチ姿勢を理解しています。たとえばCompositeDrawableComponentクラスで)、各コンポーネントに対して複数のバッチを使用する必要があります。私は私の問題を解決するかもしれないBegin(params)に送ることができるパラメータの組み合わせを探すことを試みてきましたが、今までは成功しませんでした。 @Scott W – AdiB

+0

あなたは複数のものを強制的に使用する方法が混乱していますか?これを実証するためにいくつかのコードを投稿できますか? –

関連する問題