在不同级别的XNA游戏中使用多个SpriteBatches,导致组件保持不可见

时间:2012-01-15 11:59:15

标签: xna sprite composite drawablegamecomponent

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

我的问题是:

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

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

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

因此,SpaceShip的组件只是简单地绘制在屏幕的组件后面(在我的例子中是背景),并且对用户来说是不可见的。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

不要使用多个SpriteBatches。

您仍然可以将所有SpriteBatch变量保留在所有类中,但不是每次都声明一个新变量,而是传递一个。此时你必须改变的是确保你只有一次开始和结束,现在你可以更好地控制绘制顺序。您可以使用图层深度,也可以只按正确的顺序手动绘制。