0

現在、XNA ベースのスペース インベーダー ゲームに Screens ロジックを追加しようとしています。

私の問題は:

各画面は、GameComponentsManager として使用される CompositeDrawableComponent インスタンスの助けを借りて、独自のゲーム コンポーネント (SpaceShip、EnemyMatrix など) を管理します。

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

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

その結果、SpaceShip のコンポーネントは単に Screen のコンポーネントの背後 (私の場合は背景) に描画され、ユーザーには見えないままになります。

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

4

1 に答える 1

1

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

すべての SpriteBatch 変数をすべてのクラス内に保持することはできますが、毎回新しい変数を宣言する代わりに、1 つの変数を渡します。この時点で変更する必要があるのは、Beginning と Ending が 1 回だけであることを確認することだけです。これで、描画順序をより適切に制御できるようになります。レイヤーの深さを使用するか、正しい順序で手動で描画することができます。

于 2012-01-15T23:00:28.793 に答える