地圖編輯器優(yōu)化運(yùn)行觸發(fā)器技巧
一些T作者在作圖時(shí)可能會(huì)搞出來以下情況

在某一些經(jīng)常會(huì)觸發(fā)的地方運(yùn)行大量觸發(fā)。
但是運(yùn)行觸發(fā)器比直接運(yùn)行一個(gè)函數(shù)效率是慢很多的。
如果你對(duì)效率有追求,并且大量試用運(yùn)行觸發(fā)器,可以試用YDWE的#define功能來讓運(yùn)行觸發(fā)器更改成運(yùn)行對(duì)應(yīng)函數(shù)。
但是要注意的是如果有大量的循環(huán)操作可能會(huì)達(dá)到30W字節(jié)碼上限

首先要在自定義代碼區(qū)中插入以下代碼:
<? 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 ?>


在運(yùn)行觸發(fā)器的動(dòng)作前面塞入以下4行自定義代碼:
? ? #define ConditionalTriggerExecute2(s) <?=ConditionalTriggerExecute(s')?>
? ? #define ConditionalTriggerExecute(s) ConditionalTriggerExecute2('s)
? ? #define TriggerExecute2(s) <?=TriggerExecute(s')?>
? ? #define TriggerExecute(s) TriggerExecute2('s)
在運(yùn)行觸發(fā)器動(dòng)作結(jié)尾塞入以下4行自定義代碼:
? ? #undef ConditionalTriggerExecute2
? ? #undef ConditionalTriggerExecute
? ? #undef TriggerExecute2
? ? #undef TriggerExecute

這樣就完成了
但要主要注意觸發(fā)器的順序,這樣干的話執(zhí)行運(yùn)行觸發(fā)器動(dòng)作的觸發(fā)器必須在被運(yùn)行的觸發(fā)器下面,如果是新建的觸發(fā)器放好順序后保存也會(huì)報(bào)錯(cuò),需要保存重新打開地圖后才能有正確的順序。
以及要注意計(jì)算條件時(shí)的運(yùn)行觸發(fā)器時(shí),對(duì)應(yīng)觸發(fā)器必須要寫了條件才能正常使用。
如果只有1~2個(gè)觸發(fā)器是不建議這樣操作的,頻繁被觸發(fā)的觸發(fā)器有大量被分發(fā)的觸發(fā)器時(shí)可以這樣操作來優(yōu)化運(yùn)行效率,但注意的是如果操作量過大(例如里面有一堆循環(huán)還有一堆逆天范圍單位選取)時(shí)可能會(huì)達(dá)到30W字節(jié)碼上限。但一般這時(shí)如果你本地測試YDWE會(huì)報(bào)錯(cuò)。
一時(shí)興起寫的,不仔細(xì)也不靠譜,關(guān)于字節(jié)碼上限和效率測試可以查一下貼吧或者h(yuǎn)ive。