因此,我开始了我当前的项目,而我所做的第一件事就是运行它,它给了我上述的异常(exception)。昨晚运转良好。这就是我的Draw事件中的所有代码。 spriteBatch.Begin不会出现在项目中的其他任何地方。在此处删除Begin会导致spriteBatch.Draw引发异常,将spriteBatch.End放在Begin之前,也会引发异常。我不知道什么地方出了什么问题以及如何解决这个问题。

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(Spritebatch spriteBatch)
{
spriteBatch.Begin();
spriteBatch.Draw(PlayerSprite,PlayerPosition, etc);
spriteBatch.End();
}

您需要删除BeginEnd调用,因为它们已被父方法调用。

编辑:没有看清楚,我看到你相信这不是问题,但是我们需要查看其他方法来解决问题。

关于c# - SpriteBatch: "Begin cannot be called again until End has been successfully called.",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13502708/

10-12 04:04