我有以下问题,在我的代码,我有这个环上的定时器运行(这是在大的定时器运行循环的只是一小部分),
那个大计时器内(他剔每隔1秒)我有1种方法需要等待5秒钟,则继续循环代码的休息,但我想它不会停留在代码和定时器将继续运行每1秒并不会等待那些5秒。
我做了什么我添加了一个新的计时器(timer_deva)是蜱每5秒,做它里面的所有的检查,然后计时器停止。
所以我的问题是,我需要等待5秒检索值来完成我的代码,但我需要的是我的主定时器将保持同步运行,而当他得到他的结果对其他时间,他需要完成他离开代码背后。
提前致谢,
else if (mobID.Equals(Convert.ToInt32(txtDeva)))
{
//START CHECK WITH TIMER
timer_deva.Start();
//Methods inside timer_deva update the winnerNation
//END CHECK TIMER - GET RESULT
winner(zoneId, winnerNation, humansKills, orcKills);
}
TL;博士
传统的计时器没有在游戏中使用。 游戏有处理他们的逻辑非常不同的机制和经过的时间。
龙版本:
我知道这可能不是直接回答你的问题,但它的办法不多的文字抽筋成一个注释。 你的声音计时器非常复杂和层次。 从你的变量名,我会假设你正在编写游戏。 游戏一般不与定时器或没有你所期望的方式工作。 这种不同的游戏类似的行为会帮助你很多你的计时器的问题,甚至可能会帮助你更与一般的设计。
游戏通常有一些所谓一个game loop
。 一般来说它是被称为一个接一个的循环后三个主要功能:
while(running)
{
HandleUserInput();
ChangeWorld();
Render();
}
你得到用户输入,则相应地改变游戏世界,你把它画到屏幕上。 现在,快你的电脑,速度越快这个循环运行。 这是很好的图形(FPS认为),但糟糕的比赛。 想象一下,俄罗斯方块,每一个帧的块移动。 现在,我不想买一个更快的计算机,游戏将变得更加困难的方式。
因此,为了保持游戏的速度常数独立于计算机的电源,循环认为经过的时间:
while(running)
{
var timePassedSinceLastLoop = CalculateTimeDelta();
HandleUserInput();
ChangeWorld(timePassedSinceLastLoop);
Render();
}
现在想象一下,在游戏中的东西冷却时间。 玩家按下“A”,一些很酷的动作发生了,虽然他可以按下“A”再次,什么都不会发生在接下来的5秒。 但是这场比赛仍然运行并做了所有可能发生的游戏中其他的事情。 这不是一个传统的计时器。 这是一个变量,让我们把它叫做ActionCooldown
,而一旦玩家触发动作,它设置为5秒。 每当世界变化中,timePassed是从数量,直到它的零减去。 一直以来,在游戏运行和处理输入和渲染。 但只有一次ActionCooldown
降为零,另一个按“A”将再次触发该动作。