在使用Monogame开发我的游戏时,我想用屏幕右上方的按钮暂停游戏......但是当其他元素正在绘制时,只显示pauseImage。 我在这里放了Draw()函数的代码:
SBatch.Begin();
SBatch.Draw(PauseImage,new Vector2(1024,50), Color.White);
if (_isPaused)
{
SBatch.Draw(ResumeImage, new Vector2(500, 300), Color.White);
SBatch.Draw(QuitImage,new Vector2(600,300),Color.White);
}
SBatch.Draw(_castel.Image, _castel.PosCastle, Color.White);
SBatch.DrawString(LineFont, _life + "/1000", _castel.PosLife, Color.Black);
SBatch.DrawString(LineFont, "Score:" + _score, new Vector2(_castel.PosLife.X,_castel.PosLife.Y+50), Color.Black);
SBatch.End();
foreach (EnemyUnit t in _enemyUnits)
{
t.AnimatedSprite.Draw(SBatch, t.Pos);
if (_mouseState.LeftButton == ButtonState.Pressed && t.Area.Limit(_mouseState))
{
float temp;
temp = t.Pos.Y;
t.Pos.Y -= 470;
MouseAttack.Draw(SBatch, t.Pos);
t.Pos.Y = temp;
}
}
SBatch.End();
}
base.Draw(gameTime);
图像是Texture2D对象中的普通png加载。
答案 0 :(得分:1)
将绘制pauseImage的部分移动到代码的末尾,以便最后绘制并在其他所有内容之上绘制。然后从代码中删除第一个SBatch.End()
。
foreach (EnemyUnit t in _enemyUnits)
{
t.AnimatedSprite.Draw(SBatch, t.Pos);
if (_mouseState.LeftButton == ButtonState.Pressed && t.Area.Limit(_mouseState))
{
float temp;
temp = t.Pos.Y;
t.Pos.Y -= 470;
MouseAttack.Draw(SBatch, t.Pos);
t.Pos.Y = temp;
}
}
if (_isPaused)
{
SBatch.Draw(ResumeImage, new Vector2(500, 300), Color.White);
SBatch.Draw(QuitImage,new Vector2(600,300),Color.White);
}
SBatch.End();