找回密码
 点一下
楼主: acer01

为什么会暴卡?

[复制链接]
发表于 2007-11-29 13:06:38 | 显示全部楼层
没有全部看完,不知道你卡的原因,不过有几个地方是有可能造成卡的:

1,计时器步长:0.01秒,太小了。经验是0.035秒和0.01秒的效果是完全一样的,最好不要低于0.035秒吧。
2,每次运行都要创建一个计时器,太费资源了,解决方法是只使用一个计时器去处理所有的数据,当然,这样做的话你就要把数据存在局部变量数组里,而不是用缓存。
3,handle是不可以set null的,这是暴雪的一个bug,set null可能会造成游戏崩溃,比如:
[codes=jass]local timer t = GetExpiredTimer()
set t = null[/codes]

解决方法是用另外一个函数把handle传递过去使用,如
[codes=jass]function action takes timer t returns nothing
endfunction[/codes]

这样就不需要去清空计时器。

关于第二点,最好的方法是用vJass把一个实例的所有数据打包成类,这样方便调用和清空,当然前提是你要懂得vJass的使用方法。
回复

使用道具 举报

 楼主| 发表于 2007-11-29 18:38:51 | 显示全部楼层
不过我用 set t=null好像还行啊,现在计时器改成0.1秒了,已经全部ok了,就是退出游戏的时候很慢,不知道虾米原因,也许我开的东西太多了吧……
vjass确实没接触过,但你说的把所有数据打包和jass的把数据存到缓存有什么区别呢?
回复

使用道具 举报

发表于 2007-11-29 19:28:17 | 显示全部楼层
区别就是速度快很多。
回复

使用道具 举报

 楼主| 发表于 2007-11-29 19:39:04 | 显示全部楼层
酱紫啊,看来以后还得看看vjass啊
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 20:16 , Processed in 0.041603 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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