Spritebatch不起作用

时间:2013-06-13 11:59:52

标签: drawing monogame

在使用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加载。

1 个答案:

答案 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();