1 事件響應(yīng)模塊:
編輯器的操作極其復(fù)雜,如果沒(méi)有一個(gè)清晰的事件分發(fā)流程,操作邏輯處理起來(lái)苦不堪言。
主要的思路是設(shè)定編輯模式,然后在每個(gè)編輯模式下再有多個(gè)子模式。例如建筑編輯模式,放置建筑子模式等。
每個(gè)子模式下都有獨(dú)立的鼠標(biāo)和鍵盤(pán)響應(yīng)處理,如左右鍵 按下彈起的響應(yīng)等。
這樣在進(jìn)行邏輯處理時(shí),先判斷當(dāng)前編輯器所處的模式和子模式,即可進(jìn)入對(duì)應(yīng)的響應(yīng)操作。
2 場(chǎng)景對(duì)象層次:
編輯器的操作幾乎都是基于對(duì)象的,設(shè)定一個(gè)層次清晰的對(duì)象結(jié)構(gòu),在進(jìn)行對(duì)象操作時(shí)則順風(fēng)順?biāo)。如:基本?duì)象,建筑對(duì)象,建筑組對(duì)象等。
3 撤銷重做模塊:
如果沒(méi)有做過(guò)類似的編輯器,應(yīng)該不會(huì)知道這模塊的重要性。
在實(shí)際的場(chǎng)景編輯中,常常編輯錯(cuò)了,就想恢復(fù)到編輯前的狀態(tài),這就用到了撤銷重做的功能。
主要的實(shí)現(xiàn)思路是,當(dāng)某個(gè)操作需要撤銷重做功能時(shí),注冊(cè)一個(gè)對(duì)應(yīng)的操作類,保存相關(guān)的參數(shù),有對(duì)應(yīng)的執(zhí)行函數(shù)和撤銷函數(shù)。
然后再把這操作保存到一個(gè)全局的操作列表,每執(zhí)行一次撤銷操作則把最后一個(gè)操作從操作列表中移除。
因?yàn)橛涗浟讼嚓P(guān)的數(shù)據(jù),所以在執(zhí)行撤銷操作時(shí),可以完全回到編輯前的狀態(tài)。
4 區(qū)域管理模塊
障礙區(qū),遮擋區(qū),安全區(qū),各種自定義區(qū)域等等,都是屬于區(qū)域操作范疇。這種操作用得最多的就是畫(huà)刷,所以畫(huà)刷的設(shè)計(jì)好壞影響重大。
5 編輯態(tài)文件
即除了包括游戲數(shù)據(jù)外還保存很多游戲不用的數(shù)據(jù),但在編輯器使用過(guò)程中卻帶來(lái)很多便利。
比較有利的一點(diǎn)是很多情況下導(dǎo)出的場(chǎng)景配置文件是二進(jìn)制文件,所以看不到每個(gè)版本的修改內(nèi)容,這時(shí)可通過(guò)對(duì)應(yīng)的編輯態(tài)文件來(lái)對(duì)比。