找回密码
 点一下
查看: 2998|回复: 4

[已解决]关于泄露

[复制链接]
发表于 2008-9-18 21:36:14 | 显示全部楼层 |阅读模式
请问有一个触发只有事件和动作
用TriggerRemoveAction(udg_t,udg_ta)  再  DestroyTrigger(udg_t)
这样会不会有泄露?

还有个问题,为什么把动作写到条件里,这样有什么好处?
发表于 2008-9-18 21:54:57 | 显示全部楼层
据说把动作写在条件里效率会高一些,速度会快一些,不过如果处理不当的话war3会弹掉的
回复

使用道具 举报

发表于 2008-9-19 13:25:46 | 显示全部楼层
如果是动作写到条件里    直接DestroyTrigger(udg_t) 就行了
这也许就是好处吧


但是条件里不能加等待的  貌似
还是有局限的
回复

使用道具 举报

发表于 2008-9-25 10:58:41 | 显示全部楼层
有条件就删条件,有动作就删动作~
一个触发可能没有条件或动作,也可能有N个条件和动作~~
还有就是TriggerRemoveXXX一定要放在DestroyTrigger之前
否则DestroyTrigger之后,残留的Condition和Action就永远不能删除了

动作写在条件中会比正常写法高效很多,比如像物品叠加之类常用又简单的东西,能直接提高N倍效率,因为Action被激活(触发条件成立即被激活)会消耗很多资源,即使是空Action甚至没有Action
同时,条件中是不能出现等待的,所有等待之后的代码全部无效,只能用TimerStart来处理异步执行的东西,不过其实这个是无所谓的,因为TriggerSleepAction及其低效又及其不精确,自学Jass以来我就几乎没用过TriggerSleepAction
值得注意的是everguo发过的一个会导致游戏跳错的未知bug,虽然我自己写过的东西从没遇到过这个问题,但也是不得不注意的。实在是这种写法效率提升太多了,所以即使有未知bug的可能性,我仍然坚持使用这种写法。
回复

使用道具 举报

发表于 2008-9-25 11:04:09 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 07:12 , Processed in 0.035408 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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