初始化C#的开关函数中的DrawString()

本文关键字:DrawString 函数 开关 初始化 | 更新日期: 2023-09-27 18:27:06

我使用的是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"answers"GameState.TutorialSelect"切换时,我想清除DrawString(),请如何解决问题?谢谢

初始化C#的开关函数中的DrawString()

这应该不是问题,因为绘制时总是清除曲面。否则,当任何更改(由于动画等)时,都会留下瑕疵。

你的绘图功能应该是这样的:

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;但那只是我。