0

在使用 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);

该图像是一个普通的 png 加载到一个 Texture2D 对象中。

4

1 回答 1

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();
于 2013-06-13T18:36:43.053 回答