找回密码
 点一下
查看: 1336|回复: 7

关于Timer

[复制链接]
发表于 2010-11-30 21:06:02 | 显示全部楼层 |阅读模式
今天测试了一下Timer,发现SC2的Timer好像跟War3的Timer不一样,计时的精度没那么准了,或许是我的问题。
我测试的时候把Timer设置为TimerStart(gv_time, 0.01, true, c_timeReal);然后做+1计算并以文本形式显示到游戏里,发现10秒里面相加出来的结果只有300左右。那就是说Timer的精度只有0.3秒?

然后我还测试了一下把Timer设为0,然后居然没卡死。

可能是我设置的错误吧,求解如何把Timer的精度提高~
发表于 2010-11-30 21:35:45 | 显示全部楼层
奇怪... ...
不会是像War3的等待吧... ...
回复

使用道具 举报

发表于 2010-11-30 23:14:52 | 显示全部楼层
sc2的timer精度比war3低,这个是事实。虽然这点很奇怪就是了。因为sc2编辑器基本上全面超越we。结果Timer精度反而比war3低。

不过相对应的,sc2的wait精度和timer一样了,所以wait的精度比we高。


SC2的timer最小间隔是0.0625秒。你会得出0.3的结论其实只是因为你间隔设得太低了,0.0625以下的间隔反而只会导致问题,会多等待几次。

不过通过一个窍门可以将精度提高到0.03125秒。


注意,不论是0.0625秒还是0.03125秒都是指游戏时间,所以如果你在Faster速度下进行游戏,这个最小间隔会小很多(也就是精度高了)。



sc2之所以采用0.0625秒的间隔是因为sc1的最小间隔就是0.0625秒,sc2的一些机制想要和sc1一样,所以才会连这个也照搬,一个游戏周期是0.0625秒游戏时间(虽然在galaxy范畴内没有精度更高的timer很奇怪)




总之现在最高只能提高到0.03125秒游戏时间(注意是游戏时间,实际时间会随着游戏速度而变化,所以在faster下精度最高)。如果希望更高精度,只有等以后暴雪强化timer了。
回复

使用道具 举报

 楼主| 发表于 2010-11-30 23:43:22 | 显示全部楼层
謝謝頭目的詳細解說,最近我在製作一個第1-3人稱的射擊操作系統,因為內置的鏡頭跟隨會有緩衝時間,並不是像war3的鏡頭跟隨一樣是無緩衝的。所以想用高精度的Timer來實現這個鏡頭跟隨。
如果是這樣的話,就只能這樣了。謝謝頭目~
回复

使用道具 举报

发表于 2010-12-1 00:25:16 | 显示全部楼层
估计1.2.0或者1.3.0的时候会有改进。
回复

使用道具 举报

发表于 2010-12-1 00:58:51 | 显示全部楼层
timer不是不能直接设置执行函数了么?
另外如果用于循环,是否每个xx时间的事件触发比timer到期触发更精确?
回复

使用道具 举报

发表于 2010-12-1 01:32:20 | 显示全部楼层
用循环等待0.0秒就可以实现0.03125秒的周期等待。这也是将timer精度提高一半的方法。
回复

使用道具 举报

 楼主| 发表于 2010-12-1 11:00:49 | 显示全部楼层
Galaxy目前还有很多不成熟和Bug的地方,毕竟才出来没多久,正常正常。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-22 15:17 , Processed in 0.032417 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表