在C#的switch函数中初始化DrawString()

时间:2014-10-17 20:33:51

标签: c# xna

我使用的是XNA和C#,我使用的开关功能如下:

switch (state)
{
    case GameState.MainMenu:
        Score = 1;
        equation.Draw(spriteBatch);//for the equation
        break;

    case GameState.TutorialSelect:
        Score2 = 1;
        equation.Draw(spriteBatch);//for the equation
        break;
}

在我的方程函数中,我有:

public void Draw(SpriteBatch spriteBatch)
{
    if (Score == 1)
    {
        spriteBatch.DrawString(
            Font,                          
            "AAAAAAAAA",  
            scorePos,                     
            Color.White);
    }

    if (Score2 == 1)
    {
        spriteBatch.DrawString(
            Font,                          
            "BBBBBBBBBBBBB",  
            scorePos3,                     
            Color.White);
    }
}

在我的情况下,当我从" GameState.MainMenu"切换时,我想要清除DrawString()。和" GameState.TutorialSelect",如何解决问题? 感谢。

1 个答案:

答案 0 :(得分:0)

这不应该是一个问题,因为在绘制时总是清除表面这个确切的原因。否则,当任何事情发生变化时(由于动画等),你会遗留任何文物。

您的绘图功能应如下所示:

public void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.CornflowerBlue);

    //All your code
}

如果您指的是两个绘图,那么这是因为您没有取消"分数"开关上的变量。你需要这样做:

switch (state)
{
    case GameState.MainMenu:
        Score = 1;
        Score2 = 0;
        equation.Draw(spriteBatch);//for the equation
        break;

    case GameState.TutorialSelect:
        Score2 = 1;
        Score = 0;
        equation.Draw(spriteBatch);//for the equation
        break;
}
无论如何,这种逻辑真的搞砸了;我会再次打开state;但那就是我。