我试图将游戏的各个部分分成状态(场景),这样我就可以更轻松地管理它们。虽然一切都在更新循环中初始化和处理游戏逻辑方面有效,但我无法使用精灵批处理在绘制循环中绘制一些内容。
一些摘录:
iOS9
public class Scene : DrawableGameComponent {
private List<GameComponent> _children = new List<GameComponent>();
public override void Draw(GameTime gameTime) {
// invoke draw on all enabled & visible drawable children
}
public override void Update(GameTime gameTime) {
// invoke update on all enabled children
}
}
这里没什么好看的。绘制方法得到了相关的调整,但屏幕保持黑色!当我把所有绘图相关的内容(加载内容,开始/结束spritebatch)放入主游戏的draw方法(类型派生自public class TitleScene : Scene {
private readonly SpriteBatch _spriteBatch;
private Texture2D _titleBackground;
public TitleScene(Game game)
: base(game)
{
_spriteBatch = new SpriteBatch(game.GraphicsDevice);
}
public override void LoadContent() {
_titleBackground = Game.Content.Load...
}
public override void Draw(GameTime gameTime) {
_spriteBatch.Begin();
// draw _titleBackground
_spriteBatch.End();
}
)时,它会被渲染得很好。
游戏是否只允许有一个Game
?或者我在这里遗漏了什么?
SpriteBatch
,Scene
和SceneManager
的完整来源:http://pastebin.com/5CkbipzC
主要游戏类型:http://pastebin.com/pgbrjhna