|
据老狼所说(找不到原帖了),销毁触发时要手动销毁触发条件和触发动作,对此做了测试,结论是(War3 1.23):
event:
trigger销毁后不需要排泄(jass里也无法排泄)
triggercondition:
trigger销毁后不需要排泄
triggeraction
trigger销毁后需要单独排泄
额外一点是
对同一个code反复使用Condition()/Filter()不会额外占用内存(不知道和RPBug有没有关系- -)
测试代码如下:
[trigger]
t
事件
时间 - 游戏开始 1.00 秒
条件
动作
游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: sfd
For循环整数A从 1 到 10000, 做动作
Loop - 动作
For循环整数B从 1 到 5000, 做动作
Loop - 动作
自定义代码: set udg_boolexpr=Condition(function IsUnitEnemyEx)
自定义代码: set udg_boolexpr=Filter(function IsUnitEnemyEx)
自定义代码: set udg_t=CreateTrigger()
自定义代码: call TriggerRegisterGameEvent(udg_t,EVENT_GAME_SAVE)
自定义代码: call TriggerAddCondition(udg_t,Condition(function IsUnitEnemyEx))
自定义代码: set udg_action=TriggerAddAction(udg_t,function FrostHellLoop)
自定义代码: call TriggerRemoveAction(udg_t,udg_action)
自定义代码: call DestroyTrigger(udg_t)
游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (转换 i 为字符串)
设置 i = (i + 1)
等待 0.01 秒
[/trigger]
去掉TriggerRemoveAction一行就会运行内存暴涨,否则内存不动
也就是说,坚持把动作写在条件里的筒子们可以放心地直接DestroyTrigger()了~
测试时发现个情况是如果整数B的循环太大可能会使触发执行完第一次B循环后直接结束(比如把5000改大),具体原因尚未查证或研究
就这些,权当抛砖引玉,另外有人能给下老狼研究的原帖么,谢~ |
评分
-
查看全部评分
|