SpriteBatch:"在成功调用End之前,不能再次调用Begin."

Gan*_*rit 6 c# xna exception spritebatch

所以我启动了我当前的项目,我做的第一件事是运行它,它给了我上面的例外.昨晚运行得很好.这是我的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);
Run Code Online (Sandbox Code Playgroud)

Cyr*_*ral 1

好吧,我需要查看你的 levek1.Draw 和 player.Draw 以获取我的信息,但我期待这个。在其中一种方法中,您正在调用spriteBatch.Begin(),您必须End()在调用此方法之前调用。

所以如果你的玩家类绘制方法如下所示

Draw(Spritebatch spriteBatch)
{
spriteBatch.Begin();
spriteBatch.Draw(PlayerSprite,PlayerPosition, etc);
spriteBatch.End();
}
Run Code Online (Sandbox Code Playgroud)

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

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