觸發(fā)原理概論——4.3關(guān)聯(lián)觸發(fā)
對(duì)于很多觸發(fā)條件和結(jié)果,觸發(fā)標(biāo)記可以確定它們的作用對(duì)象。我們每建立一個(gè)觸發(fā),就會(huì)同時(shí)建立一個(gè)與其關(guān)聯(lián)的觸發(fā)標(biāo)記。而對(duì)于可以增加觸發(fā)標(biāo)記的小隊(duì)、單位、建筑等,它們同時(shí)只能掛上一個(gè)觸發(fā)標(biāo)記。所以如果我們想讓多個(gè)觸發(fā)對(duì)同一個(gè)或數(shù)個(gè)對(duì)象生效,我們就需要關(guān)聯(lián)觸發(fā)來讓一個(gè)標(biāo)記與多個(gè)觸發(fā)關(guān)聯(lián)起來。
?
建立兩個(gè)觸發(fā)A、B,條件均使用48號(hào)關(guān)聯(lián)對(duì)象被摧毀,結(jié)果均使用95號(hào)路徑點(diǎn)刷新核彈,類型均為任意關(guān)聯(lián)對(duì)象單次觸發(fā),在地圖上放置兩個(gè)帶A、B觸發(fā)對(duì)應(yīng)標(biāo)記(記為a、b)的單位進(jìn)行測(cè)試。
?
當(dāng)A為B的關(guān)聯(lián)觸發(fā),B為A的關(guān)聯(lián)觸發(fā)時(shí):
程序卡死,無法進(jìn)入游戲,但不彈窗。
當(dāng)A為B的關(guān)聯(lián)觸發(fā),A的關(guān)聯(lián)觸發(fā)為<none>時(shí):
摧毀帶標(biāo)記a的單位觸發(fā)觸發(fā)A的結(jié)果,摧毀帶標(biāo)記b的單位觸發(fā)觸發(fā)A、B的結(jié)果。
當(dāng)B為A的關(guān)聯(lián)觸發(fā),B的關(guān)聯(lián)觸發(fā)為<none>時(shí):
摧毀帶標(biāo)記a的單位觸發(fā)觸發(fā)A、B的結(jié)果,摧毀帶標(biāo)記b的單位觸發(fā)除非B的結(jié)果。
當(dāng)A為A的關(guān)聯(lián)觸發(fā),B為B的關(guān)聯(lián)觸發(fā)時(shí):
程序卡死,無法進(jìn)入游戲,但不彈窗。
?
由此可以得出結(jié)論:當(dāng)觸發(fā)A的關(guān)聯(lián)觸發(fā)為觸發(fā)B時(shí),觸發(fā)A的標(biāo)記a也可視為觸發(fā)B的標(biāo)記b,但標(biāo)記b不可視為標(biāo)記a。簡(jiǎn)單來說,標(biāo)記a關(guān)聯(lián)的對(duì)象,只有觸發(fā)A和觸發(fā)A的關(guān)聯(lián)觸發(fā),即一個(gè)標(biāo)記相當(dāng)于關(guān)聯(lián)了兩個(gè)觸發(fā)。同時(shí),如果關(guān)聯(lián)觸發(fā)的編寫中,出現(xiàn)了觸發(fā)和關(guān)聯(lián)觸發(fā)形成循環(huán)(如測(cè)試中的A和B互為關(guān)聯(lián)觸發(fā)A→B→A,或A、B的關(guān)聯(lián)觸發(fā)為本身A→A,B→B)的情況,則會(huì)出現(xiàn)地圖無法加載完成卡死的bug,需要注意。
下面測(cè)試關(guān)聯(lián)觸發(fā)的效果能否在多個(gè)觸發(fā)之間進(jìn)行傳遞,即一個(gè)標(biāo)記能否對(duì)兩個(gè)以上的觸發(fā)生效。
?
建立四個(gè)觸發(fā)A、B、C、D,條件均使用48號(hào)關(guān)聯(lián)對(duì)象被摧毀,結(jié)果均使用95號(hào)路徑點(diǎn)刷新核彈,類型均為任意關(guān)聯(lián)對(duì)象單次觸發(fā),在地圖上放置四個(gè)帶A、B、C、D觸發(fā)對(duì)應(yīng)標(biāo)記(記為a、b、c、d)的單位進(jìn)行測(cè)試。
?
當(dāng)A為B的關(guān)聯(lián)觸發(fā),B為C的關(guān)聯(lián)觸發(fā)時(shí):
摧毀帶標(biāo)記a的單位觸發(fā)觸發(fā)A的結(jié)果,摧毀帶標(biāo)記b的單位觸發(fā)觸發(fā)A、B的結(jié)果,摧毀帶標(biāo)記c的單位觸發(fā)觸發(fā)A、B、C的結(jié)果。
當(dāng)A為B的關(guān)聯(lián)觸發(fā),B為C和D的關(guān)聯(lián)觸發(fā)時(shí):
摧毀帶標(biāo)記a的單位觸發(fā)觸發(fā)A的結(jié)果,摧毀帶標(biāo)記b的單位觸發(fā)觸發(fā)A、B的結(jié)果,摧毀帶標(biāo)記c的單位觸發(fā)觸發(fā)A、B、C的結(jié)果,摧毀帶標(biāo)記d的單位觸發(fā)觸發(fā)A、B、D的結(jié)果。
?
由此可以得出結(jié)論:關(guān)聯(lián)觸發(fā)的效果是可以正向傳遞的。試驗(yàn)中,標(biāo)記b可視為標(biāo)記a觸發(fā)觸發(fā)A、B,標(biāo)記c可視為標(biāo)記b也可視為標(biāo)記a觸發(fā)觸發(fā)A、B、C。單個(gè)觸發(fā)可以作為數(shù)個(gè)觸發(fā)的關(guān)聯(lián)觸發(fā),但這數(shù)個(gè)觸發(fā)本身并不存在關(guān)聯(lián)關(guān)系,關(guān)聯(lián)觸發(fā)的效果逆向是不能傳遞的。試驗(yàn)中,標(biāo)記b可視為標(biāo)記a觸發(fā)觸發(fā)A、B,標(biāo)記c可視為標(biāo)記b也可視為標(biāo)記a觸發(fā)觸發(fā)A、B、C,但標(biāo)記d不可視為標(biāo)記c只能視為標(biāo)記b或a,只能觸發(fā)觸發(fā)A、B、D。也就是,標(biāo)記c和d都可視為標(biāo)記b,但標(biāo)記c不可視為標(biāo)記d,標(biāo)記d也不可視為標(biāo)記c。