我使用的是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",如何解决问题? 感谢。
答案 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
;但那就是我。