我的程序有问题。我不明白屏幕如何接管屏幕上的其他所有内容。详细来说,我的代码如下所示:
public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
{
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, cam.get_transformation(GestionEcran.GraphicsDevice));
//Draw the background
decor.Draw(spriteBatch, gameTime, 255);
//Draw the players
Player2.Draw(spriteBatch, gameTime);
Player1.Draw(spriteBatch, gameTime);
//Draw the foreground
decor.DrawPremierPlan(spriteBatch, gameTime, 70);
if (aPlayerisWinning== true)
{
//THIS LINE "HITBOX" IS APPEARING BEFORE PLAYERPORTRAIT!!!!!!!!!!!!!!
spriteBatch.Draw(hitBox, new Rectangle(0, 0, 500,500), new Color(255, 255, 255, 255));
spriteBatch.Draw(PlayerPortrait, new Rectangle(0,0,500,500), new Color(255, 255, 255, 255));
}
spriteBatch.End();
// USED FOR ADDITIVE BLENDING
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, null, null, null, null, cam.get_transformation(GestionEcran.GraphicsDevice));
{
Player1.DrawEffects(spriteBatch,gameTime);
Player2.DrawEffects(spriteBatch,gameTime);
}
spriteBatch.End();
如您所见,hitbox(白屏)必须出现在 PlayerPortrait 后面,但它不起作用。白色的屏幕覆盖了所有其他图纸。
你有什么主意吗?谢谢。
编辑:SpriteSortMode 没有任何改变。BacktoFront、FrontToBack 和 Texture 弄乱了我的重叠结构。立即和延迟效果很好,但白屏也有同样的问题。正如第一个答案的链接中所说,延迟绘制一批中的所有精灵,以相同的顺序收到对 Draw 的调用。那么为什么我的倒数第二个电话出现在我最后一个电话之前呢?