欢迎光临散文网 会员登陆 & 注册

地图编辑器优化运行触发器技巧

2023-07-31 23:00 作者:bili_38354167  | 我要投稿

一些T作者在作图时可能会搞出来以下情况

在某一些经常会触发的地方运行大量触发。

但是运行触发器比直接运行一个函数效率是慢很多的。

如果你对效率有追求,并且大量试用运行触发器,可以试用YDWE的#define功能来让运行触发器更改成运行对应函数。

但是要注意的是如果有大量的循环操作可能会达到30W字节码上限

首先要在自定义代码区中插入以下代码:

<? function ConditionalTriggerExecute(func) local s = string.sub(func, 8, #func-1) ?>DoNothing()

    if Trig<?=s?>Conditions() then

        call Trig<?=s?>Actions()

    endif

<? end ?>

<? function TriggerExecute(func) local s = string.sub(func, 8, #func-1)?>Trig<?=s?>Actions()

<? end ?>


在运行触发器的动作前面塞入以下4行自定义代码:

    #define ConditionalTriggerExecute2(s) <?=ConditionalTriggerExecute(s')?>

    #define ConditionalTriggerExecute(s) ConditionalTriggerExecute2('s)

    #define TriggerExecute2(s) <?=TriggerExecute(s')?>

    #define TriggerExecute(s) TriggerExecute2('s)

在运行触发器动作结尾塞入以下4行自定义代码:

    #undef ConditionalTriggerExecute2

    #undef ConditionalTriggerExecute

    #undef TriggerExecute2

    #undef TriggerExecute

这样就完成了

但要主要注意触发器的顺序,这样干的话执行运行触发器动作的触发器必须在被运行的触发器下面,如果是新建的触发器放好顺序后保存也会报错,需要保存重新打开地图后才能有正确的顺序。

以及要注意计算条件时的运行触发器时,对应触发器必须要写了条件才能正常使用。

如果只有1~2个触发器是不建议这样操作的,频繁被触发的触发器有大量被分发的触发器时可以这样操作来优化运行效率,但注意的是如果操作量过大(例如里面有一堆循环还有一堆逆天范围单位选取)时可能会达到30W字节码上限。但一般这时如果你本地测试YDWE会报错。

一时兴起写的,不仔细也不靠谱,关于字节码上限和效率测试可以查一下贴吧或者hive。


地图编辑器优化运行触发器技巧的评论 (共 条)

分享到微博请遵守国家法律