找回密码
 点一下
查看: 1173|回复: 6

为什么会卡

[复制链接]
发表于 2010-5-21 12:42:32 | 显示全部楼层 |阅读模式
我用TimerStart函数0.01s循环一个特效,开始不卡,但是渐渐会越来越卡,我创建了特效就立即删除了,那为什么还是会卡?还有,我创建了点吗?麻烦帮我看看这个特效函数。大家帮帮忙啊!我想知道为什么会卡
function fire takes nothing returns nothing    //为了等待
local timer tm=GetExpiredTimer()
local unit you=I2U(GetStoredInteger(udg_GC,I2S(H2I(tm)),"you"))
local real x1=GetUnitX(you)
local real y1=GetUnitY(you)
local real angle=GetStoredReal(udg_GC,I2S(H2I(tm)),"angle")
local real dist=550
if angle<360 or dist==550 then //这里循环是是不会结束的
call AddSpecialEffect("war3mapImported\\WarStompCaster.mdx",x1+dist*Sin(angle*bj_DEGTORAD),y1+dist*Cos(angle*bj_DEGTORAD))
call DestroyEffect(GetLastCreatedEffectBJ())  //这里就删除了特效哇
set angle=angle+12
call StoreReal(udg_GC,I2S(H2I(tm)),"angle",angle)
else
set you=null
call FlushStoredMission(udg_GC,I2S(H2I(tm)))
call DestroyTimer(tm)
endif
endfunction
发表于 2010-5-21 14:21:34 | 显示全部楼层
[最后创建的特效]的函数貌似捕捉不到前面那个函数创建的特效,用个变量试一试呢
set e=…
call destroyeffectbj(e)
大概吧……
不知是否对,那就请楼下详解吧
回复

使用道具 举报

发表于 2010-5-21 16:10:44 | 显示全部楼层
用call destoryeffect(addneweffect),不知道打错了没有
回复

使用道具 举报

 楼主| 发表于 2010-5-21 16:26:17 | 显示全部楼层
额。还是会卡,为什么,已经用了变量了!!

----------- 帖子于 16:26 更新 --------- 之前内容发布于 16:23 ------------

还是卡啊!虽然要到快40秒才卡,但是一卡起来就是动不了那种啊,那是在2秒内突然变得很卡。。。
function fire takes nothing returns nothing    local timer tm=GetExpiredTimer()
local unit you=I2U(GetStoredInteger(udg_GC,I2S(H2I(tm)),\"you\"))
local real x1=GetUnitX(you)
local real y1=GetUnitY(you)
local real angle=GetStoredReal(udg_GC,I2S(H2I(tm)),\"angle\")
local real dist=550
local effect fx
call ForGroup(udg_cluster,function face)
if angle<360 or dist==550 then
set fx=AddSpecialEffect(\"war3mapImported\\\\WarStompCaster.mdx\",x1+dist*Sin(angle*bj_DEGTORAD),y1+dist*Cos(angle*bj_DEGTORAD))
call DestroyEffect(fx)    //这里删除了特效变量了啊
set angle=angle+12
call StoreReal(udg_GC,I2S(H2I(tm)),\"angle\",angle)
else
set you=null
call FlushStoredMission(udg_GC,I2S(H2I(tm)))
call DestroyTimer(tm)
endif
endfunction
回复

使用道具 举报

发表于 2010-5-21 19:14:44 | 显示全部楼层
tm、fx在函数结束时需要set null
face函数被执行多次是否存在内存泄漏呢?

况且卡也有并不一定是排泄的问题
回复

使用道具 举报

发表于 2010-5-21 19:47:53 | 显示全部楼层
call DestroyEffect( AddSpecialEffectTarget("Abilities\\\\Spells\\\\Demon\\\\DemonBoltImpact\\\\DemonBoltImpact.mdl", us, "origin") )........
回复

使用道具 举报

 楼主| 发表于 2010-5-22 15:47:02 | 显示全部楼层
呵呵,谢谢大家,现在运行几分钟都不卡了……
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-2 21:13 , Processed in 0.033711 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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