2016-08-12 178 views
0

我想要一个不会每秒计数的计时器。我希望它运行得更慢一个时钟的慢速计时器

timer = timer + Time.deltaTime; 
    int itimer = (int)timer; 
    int minutes = itimer % 60; 
    int hours = itimer/60; 
    string time = hours.ToString() + ":" + minutes.ToString().PadLeft(2, '0'); 

这是现在的代码。时钟现在在19:20开始,我希望分钟计数器每4秒钟上升一次(我仍然需要计算确切的时间)。我试着做“Time.deltaTime * 0.9”,但代码不起作用。我怎样才能最好的减慢这个代码?此外,当它是20:00(或转换前1200),我想要发生的事情,所以我仍然需要访问该号码 谢谢

+0

因为你在谈论'Time.deltaTime'我假设你正在使用unity3d,请确保在提问时包含相关标签。 –

+0

只需启动一个计时器,该计时器会经过第二秒,并有一个DateTime存储起始时间。在每个计时器事件中,只需调用日期时间方法AddMilliseconds()并添加一些(尽可能多的)多于1000个的毫秒100 –

+0

您说*“但代码不起作用”*当您尝试时发生了什么,行为不正确?另外@ThomasVoß这是团结的,他不是在谈论真正的挂钟时间,而是在游戏时间。而在比赛时间里,1秒的挂钟时间= 1分钟。 –

回答

1

可能你遇到的问题是一个铸造错误,当你尝试分配结果回到timer。这是因为在默认情况下,当您做0.9时,它将它作为double,而您的变量timer是一个浮点数。在数字的末尾添加f以将其标记为浮动,并且它应该可以工作。

timer = timer + Time.deltaTime * 0.9f; 
int itimer = (int)timer; 
int minutes = itimer % 60; 
int hours = itimer/60; 
string time = hours.ToString() + ":" + minutes.ToString().PadLeft(2, '0'); 
+0

哦!是!可能就是这样。我怎么能忘记这一点。我觉得现在就是这样一个虚拟的问题。我很抱歉打扰任何阅读此内容的人。我应该知道这一点 –