研究War3編輯器(4):觸發器與變數
概念
在【觸發編輯器】裡,可以對“觸發器”和“變數”進行編輯。他們可以以較為簡單的方式來指定遊戲中的一些邏輯,而不必寫程式碼。
例如,目前可以看到一個名為Melee Initialization
的觸發器。
觸發器(Trigger)
“觸發器”代表了一種邏輯:
在特定時機並且滿足限定條件下需要進行的一系列操作
- 所謂的 “特定時機” 用
事件
表示,比如“一個單位的死亡”。 - 所謂的 “限定條件” 用
條件
表示,是一些附加的判斷,比如比較一個自定義的變數是否大於一個特定的值。它是可選的,並不是必須指定。 - 所謂的 “一系列操作” 用
動作
表示,比如“改變當前的天氣”、“設定英雄的等級”等等,可以有多個。
例如,目前在Melee Initialization
動作
中可以看到。
變數(Variable)
有時候,想要實現的邏輯其中包含了一些“非固定的量”,例如:我想要讓英雄升級到“x級”,但這個“x”是由其他邏輯進行決定的。這時,“x”就是一個變量了。
“變數”對於程式設計而言是一個基礎的概念,而關於它,一個重要的屬性就是“作用域”:例如對於一個全域性作用域的變數,在任何地方都可以訪問,而一個區域性作用域的變數,只在一個範圍內可見。
在【觸發編輯器】這個介面中,新增的變數似乎都屬於全域性變數,至於區域性變數,似乎只存在於在JASS指令碼中(此說法參考
實踐:新增一個新的觸發器
首先,新增一個新的“類別”
新的類別起名為“測試類別”,然後就可以在其中新增“新觸發(Trigger)”了。
新的觸發器命名為“TestTrigger”,
工具欄的三個按鈕分別可以新增新的 事件
、條件
、動作
。新增後的可以在右下側看到(當前沒有任何內容)。
這裡打斷一下觸發器的操作,我需要在地圖中新加一個單位作為測試,我是玩家1紅色方,這裡我需要一個敵對方。因此新增一個“玩家2陣營(藍色方)”的農民:
然後新增新事件
- 型別為
單位 - Specific Unit Event
(特定單位的事件) - 選擇這個【單位(Unit)】為剛才建立的農民,而【事件】預設就是“死亡”。
然後新增對應的動作
:
型別為環境 - Create Weather Effect
建立天氣效果,而這個效果就是“灰谷大雨”
這樣就表示,當這個農民死亡時,會觸發下雨的天氣特效了。
效果如下:
實踐:使用變數
新增一個新的變數:
新變數命名為test
,變數型別是整數
,初始值是7
然後為TestTrigger
新增新的事件:
- 事件型別為
英雄 - Set Level
即給英雄設定等級 - 選擇單位為己方的英雄
- 而要升的等級為一個變數,他就是
test
這樣的意思是,現在農民死亡之後,不僅會下雨,還會讓英雄升級的test
的值(7
)。
效果:
相關資料
world-editor-tutorials : Trigger Basics and Formats
world-editor-tutorials : Learning Variable Basics