找回密码
 点一下
查看: 1645|回复: 14

急求~Timer效率极低的原因和怎么用TimerStart调用一个函数?

[复制链接]
发表于 2010-5-14 02:37:47 | 显示全部楼层 |阅读模式
SC2的TimerStart里面没有调用函数的参数...那要一个函数每0.01秒运行一次要怎么做?


刚才把函数写成触发器然后用0.01秒计时器开启

发现计时器运行的非常缓慢这又是什么原因?但是如果把计时器开启为1秒运行一次却又正常了

0.01秒的话会比实际速度慢5~8倍(也就是1秒实际上要等5~8秒)倍
 楼主| 发表于 2010-5-14 06:03:22 | 显示全部楼层
这里就是用 0.01秒计时器or每0.01秒事件捕捉的时间~但是不知道为啥这个时间非常慢~比实际的0.01秒要慢5~8倍...连肉眼都能轻松看出其流逝的时间...

PS:本机配置
3000+
2G
8600GT
除着色器和阴影外其他效果全低游戏运行接近满帧60情况下测试的情况

1.JPG   
SC3MAPTEST VI.SC2Map (597 KB, 下载次数: 11)
回复

使用道具 举报

发表于 2010-5-14 06:18:15 | 显示全部楼层
难道和WC3一样分2种计时器?……
回复

使用道具 举报

发表于 2010-5-14 08:38:39 | 显示全部楼层
呃timer现在的确没法绑函数,都要通过触发了
timer的timetype我记得0是游戏时间(受游戏里游戏速度这个选项的限制) 1是真实时间 2是啥我忘了,貌似和AI有关
看你貌似用的是游戏时间,把他改成真实时间试试看

p.s.:用单位组+过滤器的办法真是太赞了!
回复

使用道具 举报

发表于 2010-5-14 11:26:48 | 显示全部楼层
每隔一段时间运行函数用while()+wait()不行么?
回复

使用道具 举报

发表于 2010-5-14 11:44:19 | 显示全部楼层
這和timer的效率沒有半點關係。你看一下你在timer裡執行的操作。在初始情況下,就沒子彈的情況下。時間是完全正常的。
但是你向一個有很大空間的範圍發射子彈的時候,在子彈多的情況下就發現了明顯的延遲現象。
總結出來,就是你移動子彈的效率實在是太慢了。

你的想法雖然很好,但是遊戲現有的效率好像完全無法支持你的想法呢……嗯。
回复

使用道具 举报

发表于 2010-5-14 12:25:19 | 显示全部楼层

回 4楼(gamedsn) 的帖子

呃wait精度比war3好很多了,但是测试了下wait(0.01)的间隔是0.0625,这个应该是wait的最小等待时间

----------- 帖子于 12:25 更新 --------- 之前内容发布于 11:51 ------------

我认为lz的写法大概是效率最好的写法了……
我又测试了一次
这次的结论大概是timer的最小刻度是0.0625
所以timerstart(0.01)实际上大概是timerstart(0.0625)
所以速度会比预想的要慢好几倍

嗯总结就是高精密的动作尽量不要用和时间有关系的去做,能利用现有的触发就直接用触发

于是某人的弹幕图悲剧了,因为那个里的一切东西都是建立在那个timer上的
之前写系统的时候只想到了wait函数的精度,却没有考虑到timer的精度
0.0625的间隔让人自机移动手感很恶心,让弹幕移动看起来眼花,再加上杂乱无章的写法
那张图真的是无论从技术研究上到游戏趣味上都丝毫没有价值了……2k多行白写了呢

把系统从单位移动改成图片移动的时候就在孤注一掷了,因为这注定不是正常/正确的做图方式呢
现在看起来,用UI来做子弹的好处也就剩下子弹图像好控制以及镜头随意旋转移动了
啊顺便求sc2模型导入透明贴图的办法,我怎么导都没法保留贴图文件里的透明效果呢
回复

使用道具 举报

 楼主| 发表于 2010-5-14 14:09:17 | 显示全部楼层
绝对不是函数的运行效率问题...昨晚试过把自定义脚本里的弹幕函数全部删除后 仅保留显示计时器时间的UI面板显示语句这一条~同样还是非常慢...而且慢的时间还是一样比实际情况慢5~8秒左右

所以不知道是不是星际2的计时器出问题了还是地图出问题了..只要是0.01秒精度或者这种高精度的计时器(或循环事件)~精度都会严重降低...


对了~~三种类型的计时器模式全部试过了...都一样,,,
回复

使用道具 举报

发表于 2010-5-14 18:20:40 | 显示全部楼层
这个计时器有最低间隔
回复

使用道具 举报

 楼主| 发表于 2010-5-14 18:49:18 | 显示全部楼层
那0.01秒事件要怎么做...有没有高精度的计时器...
回复

使用道具 举报

发表于 2010-5-14 18:50:31 | 显示全部楼层
头目最近时间不够挖,真没办法的说。LZ先自己研究下看看。说不定比我早呢。
回复

使用道具 举报

 楼主| 发表于 2010-5-14 18:57:12 | 显示全部楼层
beiju a ~~~
回复

使用道具 举报

发表于 2010-5-14 19:00:07 | 显示全部楼层
恩,建立一个0.01秒刷新一次的effect,注册对某一特特殊单位的伤害事件,在那单位上创造出这个effect,然后……
回复

使用道具 举报

 楼主| 发表于 2010-5-14 20:31:52 | 显示全部楼层
用了一个超囧的方法...每0.01秒(实际0.05秒左右)命令单位移动来代替设置单位位置...利用SC2的自身平滑移动来模拟弹幕的轨迹...唯一的缺陷就是遇到墙壁只能杀死单位...因为刚好是来做子弹的所以将就了...
回复

使用道具 举报

发表于 2010-5-14 20:53:21 | 显示全部楼层
12L那个是开玩笑还是真的啊?-,-!
貌似可行啊似乎,如果effect刷新时间精确的话~ ~,,,
我想弄个击退的效果,结果0.06秒移动一次太卡老。显示效果相当于FPS连20都不到。一点也不平滑。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 17:15 , Processed in 0.074856 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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