XNA 4.0:如何在绘制到屏幕后删除文本?

时间:2014-07-07 23:48:54

标签: xna xna-4.0 drawstring spritebatch

大家好日子。

我试图绘制文字"传递完成!"使用此代码进行筛选:

spriteBatch.DrawString(font, "PASS COMPLETE!", new Vector2(30, 130), Color.White);

这会触发正确的IF声明。但是,如何从屏幕上删除该文本呢?我真的不确定从哪里继续这里,我的导师希望我谷歌答案或在教科书中找到它。我已经遍布了我的XNA教科书,但我没有找到删除该文本的渠道。

感谢您的帮助。

更新

protected override void Draw(GameTime gameTime)

我在这里有IF语句。基本上它会检查与p_Receiver的冲突,如果bool检出,它会绘制DrawString。我是否应该从不同角度看待这个问题?

最终

我继续以下面的答案,它比以前更好用。 :)

if (PassInfo == 3) {
(timer code)
(IF timer not "used up" then run the draw)

现在工作正常。

我很感激。

2 个答案:

答案 0 :(得分:1)

我是通过将带有一些参数的文本添加到通用列表中的函数来完成的。然后我更新并从该列表中绘制项目。在伪代码中:

function addText(text,position,duration)
    texts.add(new t(text,position,duration))
end function

function updateText()
    for each t as text in texts.findall(where t.active)
        t.duration -= 1
        if t.duration < 0 then t.active = false
    next
end function

function drawText()
    for each t as text in texts.findall(where t.active)
        //draw it
    next
end function

因此,您可以在屏幕上添加不同数量的文本在不同的位置和持续时间。

答案 1 :(得分:0)

很多游戏每次都会在整个窗口/屏幕上重绘一次,因此删除它的解决方案很可能只是停止绘制它。

即。如果条件,则在不再需要时绘制文本。

另一方面,如果你有一些更复杂的绘图逻辑只绘制需要更新的窗口/屏幕部分,那么你需要包含逻辑来重绘包含文本的那部分屏幕它不再需要了。