等待(0.016, 無視條件)
如條件為“真”則循環

文章插圖
觀察者2
1.事件:持續 - 每名玩家
2.條件:玩家變量(事件玩家, B) < 0
3.動作:
修改玩家變量(事件玩家, B, 加, 100)
修改玩家變量(事件玩家, A, 減, 1)
// 這里寫等級變化的邏輯
等待(0.016, 無視條件)
如條件為“真”則循環
注意:
一定要注意邏輯設計上不能存在死循環 , 例如上面的例子里 , 觀察者2的條件不能寫“玩家變量 <= 0” 。因為當玩家經驗=100時 , 觀察者1會將其變為0 , 就會觸發觀察者2 。而觀察者2又會再次觸發觀察者1 。這就導致了死循環的出現 。
我們在兩個觀察者最后都加上了循環 , 目的是打破條件滿足的情況 。考慮這種情況:當我們一次性給玩家增加300點經驗時 , 按理來說 , 應該讓玩家升3級 , 但因為我們沒有循環 , 玩家升了一級就結束了 , 并且后續增加經驗 , 也不會再觸發升級 。只有當條件滿足被打破時 , 條件再次滿足 , 才會再次觸發該規則 。

文章插圖
模擬函數調用
編程總是免不了函數 , 但目前為止OW中沒有函數 。但是 , 我們可以使用上面的方法 , 來模擬函數 。
還是用上面的例子 。你會發現我們的等級變化邏輯還是寫了兩遍 。我們能不能再將其獨立成一個規則?當然是可以的 。我們變化的目標是玩家 , 因此我們需要使用一個玩家變量 , 來標記我們需不需要對此玩家執行等級變化邏輯 。假設我們使用玩家變量C 。
首先 , 在游戲初始化的時候 , 將其設置為假 。我們的規則就可以變成:
觀察者1
1.事件:持續 - 每名玩家
2.條件:玩家變量(事件玩家, B) >= 100
3.動作:
修改玩家變量(事件玩家, B, 減, 100)
修改玩家變量(事件玩家, A, 加, 1)
等待(0.016, 無視條件)
如條件為“真”則循環
設置玩家變量(事件玩家, C, 真)

文章插圖
觀察者2
1.事件:持續 - 每名玩家
【守望先鋒地圖工坊應用觀察者模式思想教程 地圖工坊進階教程】2.條件:玩家變量(事件玩家, B) < 0
3.動作:
修改玩家變量(事件玩家, B, 加, 100)
修改玩家變量(事件玩家, A, 減, 1)
等待(0.016, 無視條件)
如條件為“真”則循環
設置玩家變量(事件玩家, C, 真)
等級變化規則
1.事件:持續 - 每名玩家
2.條件:玩家變量(事件玩家, C) == 真
3.動作:
// 這里寫等級變化的邏輯
設置玩家變量(事件玩家, C, 假)
注意:這里只是模擬函數調用 , 但實際上它比函數還是少很多東西 。因此 , 并不是所有情況都適合這樣寫 。

文章插圖
總結
本文其實并沒有用什么很稀奇古怪的技術 , 但本文的難點是思路的轉變:你需要將幾個本來不相同的邏輯 , 找出他們的共同點 , 并巧妙的將其拆分成多個邏輯 , 然后用規則來實現 。
到底要不要使用這種方式來設計規則?你需要考慮它的優缺點 。
相關經驗推薦
- 守望先鋒鍵盤彈鋼琴攻略 守望先鋒地圖工坊鍵盤彈鋼琴代碼分享
- 守望先鋒地圖工坊warframe戰甲技能代碼分享 守望先鋒星際戰甲玩法攻略
- 守望先鋒地圖工坊超級死斗代碼分享 守望先鋒超級死斗怎么玩
- 守望先鋒地圖工坊傳火玩法代碼分享 守望先鋒地圖工坊傳火怎么玩
- 守望先鋒地圖工坊秩序之光塔防新版攻略 秩序之光塔防代碼分享
- 守望先鋒回放系統介紹 守望先鋒回放怎么看
- 守望先鋒贊賞等級有什么用 守望先鋒贊賞等級獎勵介紹
- 守望先鋒回放怎么看 守望先鋒回放功能介紹
- 守望先鋒地圖工坊路霸的娃娃機是什么 地圖工坊娃娃機玩法
- 守望先鋒6月19日更新內容介紹 守望先鋒6月19日更新了什么
