我目前正在尝试将Screens逻辑添加到基于XNA的太空入侵者游戏中。
我的问题是:
每个屏幕在CompositeDrawableComponent实例的帮助下管理它自己的游戏组件(SpaceShip,EnemyMatrix等),用作GameComponentsManager。
每个游戏组件都包含其中的其他游戏组件(即SpaceShip持有子弹),因此包含它自己的GameComponentsManager实例。
每个GameComponentsManager都包含一个SpriteBatch,用于它的所有组件,即PlayScreen为它的SpaceShip使用一个独特的SpriteBatch,每个SpaceShip为它的子弹使用一个独特的SpriteBatch。
因此,SpaceShip的组件只是简单地绘制在屏幕的组件后面(在我的例子中是背景),并且对用户来说是不可见的。
我该如何解决这个问题?
答案 0 :(得分:1)
不要使用多个SpriteBatches。
您仍然可以将所有SpriteBatch变量保留在所有类中,但不是每次都声明一个新变量,而是传递一个。此时你必须改变的是确保你只有一次开始和结束,现在你可以更好地控制绘制顺序。您可以使用图层深度,也可以只按正确的顺序手动绘制。