大家好日子。
我试图绘制文字"传递完成!"使用此代码进行筛选:
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)
现在工作正常。
我很感激。
答案 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)
很多游戏每次都会在整个窗口/屏幕上重绘一次,因此删除它的解决方案很可能只是停止绘制它。
即。如果条件不,则在不再需要时绘制文本。
另一方面,如果你有一些更复杂的绘图逻辑只绘制需要更新的窗口/屏幕部分,那么你需要包含逻辑来重绘包含文本的那部分屏幕它不再需要了。