1

今天是个好日子。

我正在尝试绘制文本“通过完成!” 使用此代码筛选:

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

哪个会触发正确的 IF 语句。但是,我该如何从屏幕上删除该文本?我真的完全不确定从这里往哪里走,我的导师希望我在谷歌上搜索答案或在教科书中找到答案。我翻遍了我的 XNA 教科书,但找不到删除该文本的方法。

感谢您的任何帮助。

更新:

protected override void Draw(GameTime gameTime)

我在这里包含了 IF 语句。基本上它检查与 p_Receiver 的冲突,如果它是布尔检查,它会绘制 DrawString。我应该从不同的角度来看这个吗?

最后:

我继续使用以下作为答案,并且它比以前更好。:)

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

目前工作良好。

我很感激。

4

2 回答 2

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

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

于 2014-07-08T06:59:27.037 回答
0

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

即当不再需要时,让您的 if 条件不绘制文本。

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

于 2014-07-07T23:57:15.420 回答