2015-07-19 77 views
0

我有一个代码,其中我的spriteBatch正在绘制文本,我的问题是如何删除文本。 GraphicsDevice.Clear()只是改变背景的颜色。 我的代码是:Xna清除绘图

protected override void Draw(GameTime gameTime) 
{ 
     GraphicsDevice.Clear(Color.Black); 

     spriteBatch.Begin(); 

     Spiel.LoadGame(); 

     GraphicsDevice.Clear(Color.Black); 

     Spiel.Intro(); 

     spriteBatch.End(); 

     base.Draw(gameTime); 
} 

回答

-1

你只需要spriteBatch.Clear()后停止绘制它。每当游戏确定是时候绘制(每秒多次)时,就调用Draw()方法。阅读其文档here

例如,你可以声明一个字段bool needToDrawText,并用它在你的绘制方法是这样的:

if (needToDrawText) 
{ 
    spriteBatch.DrawString(font, "This is a string", location, Color.Black); 
} 

这是一个非常普通的例子。显然你应该相应地调整它。

0

GraphicsDevice.Clear(Color.CornflowerBlue);的确会清除背景并用选定的颜色填充它。每当它被擦除。只应在绘图方法的开始时调用Clear。如果你不这样做,

  • 你得到了古老的solitair效果,就像你完成一个游戏。
  • 有些东西不画。
  • 是无用的电话。

你应该使用一个布尔值:

if (needToDrawText) 
{ 
    spriteBatch.DrawString(font, "Txt", new Vector2(100,100), Color.Black); 
} 
+0

这个答案应该解决问题的任择议定书。但是,我相信问题来自于对视频游戏逻辑的误解......抽奖方法被称为多次。每个绘图都已经清除了屏幕(如您所述)。这个问题似乎是一个游戏状态问题(或缺乏游戏状态!)。 –

+0

这看起来很奇怪,与我的答案相似。 –

+0

@The Pc Luddite,但我解释了为什么它是错的,不只是什么 –