所以我启动了我当前的项目,我做的第一件事就是运行它,它给了我上面的异常。昨晚运行良好。这是我的 Draw 事件中的所有代码。 spriteBatch.Begin 没有出现在项目的其他任何地方。在此处删除 Begin 会导致 spriteBatch.Draw 抛出异常,在 begin 之前放置 spriteBatch.End 也会抛出异常。我不知道出了什么问题以及如何解决这个问题。
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
spriteBatch.Draw(background, Vector2.Zero, Color.White);
player.Draw(spriteBatch);
level1.Draw(spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
最佳答案
好吧,我需要查看您的 levek1.Draw 和 player.Draw 以获取我的信息,但这是我所期待的。在其中一种方法中,您正在调用 spriteBatch.Begin()
,您必须在调用此方法之前调用 End()
。
所以如果你的播放器类 draw 方法看起来像这样
Draw(Spritebatch spriteBatch)
{
spriteBatch.Begin();
spriteBatch.Draw(PlayerSprite,PlayerPosition, etc);
spriteBatch.End();
}
您需要删除 Begin
和 End
调用,因为它们已被父方法调用。
编辑:没看清楚,我看你相信这不是问题所在,但我们需要看看其他方法来找出问题所在。
关于c# - Sprite 批处理: "Begin cannot be called again until End has been successfully called.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502708/