0

我目前正在尝试将屏幕逻辑添加到基于 XNA 的太空入侵者游戏中。

我的问题是:

每个屏幕都在 CompositeDrawableComponent 实例的帮助下管理它自己的游戏组件(SpaceShip、EnemyMatrix 等),该实例用作 GameComponentsManager。

每个游戏组件都包含其自身的其他游戏组件(即 SpaceShip 持有子弹),因此包含它自己的 GameComponentsManager 实例。

每个 GameComponentsManager 都包含一个 SpriteBatch 用于它的所有组件,即 PlayScreen 使用一个独特的 SpriteBatch 用于它的 SpaceShips,每个 SpaceShip 使用一个独特的 SpriteBatch 用于它的子弹。

结果,SpaceShip 的组件被简单地绘制在屏幕组件的后面(在我的例子中,背景)并且对用户保持不可见。

我该如何解决这个问题?

4

1 回答 1

1

不要使用多个 SpriteBatch。

您仍然可以将所有 SpriteBatch 变量保留在所有类中,但不是每次都声明一个新变量,而是传递一个单独的变量。在这一点上,您所要做的就是确保您只有一次开始和结束,现在您可以更好地控制抽签顺序。您可以使用图层深度,也可以按正确的顺序手动绘制。

于 2012-01-15T23:00:28.793 回答