碼妖.gif
編程語言:Lua
生成的代碼語言:TypeScript
Git倉庫地址:https://github.com/superXfx/GameDesignPatterns.git
痛點——
基于狀態(tài)機編寫代碼時喝检,我們要為每個組件編寫 狀態(tài)枚舉 ,每個State的類 ,以及Ctrl 三部分。
多寫幾個就會發(fā)現(xiàn),在沒有編寫具體邏輯的情況下昔字,每個組件包含的類 只有命名差異。
這就導(dǎo)致重復(fù)性的工作存在——重復(fù)的工作就得交給程序(不帶“員”)去做~
解決思路——
先要問,代碼是什么攒砖?
給機器的指令?邏輯化語言日裙?
對吹艇,但卻復(fù)雜化了。簡單來講昂拂,任何可被記錄的語言都是一種 字符系統(tǒng)受神,在簡單講,就是 字符串格侯!
這樣問題就簡化為字符串的處理啦鼻听。
按照一定的配置生成字符串即可财著。
方案——
1、用json配置state枚舉撑碴,CtrlName等信息
2撑教、用Lua作為開發(fā)語言,這個只是因為自己比較熟灰羽,任選一種腳本語言都行驮履。
3、運行Lua腳本廉嚼,生成一個個 .ts 文件玫镐,放在對應(yīng)的目錄下。
實現(xiàn)——
1怠噪、配置文件
image.png
image.png
如圖恐似,配置一波 狀態(tài)枚舉,Ctrl與狀態(tài)枚舉的關(guān)系傍念,即可完成配置矫夷。
2、代碼
image.png
如圖憋槐,看這個run函數(shù)双藕,即可明白我要做的事情。
image.png
至于原理阳仔,就像圖上這樣忧陪,一波字符串操作,然后將其保存在以.ts為后綴保存下來近范。
另外三個函數(shù)同理嘶摊,就不貼圖了。
3评矩、成果
image.png
run一下叶堆,你就獲得給予狀態(tài)機的框架啦,往里面填填具體邏輯即可斥杜。
皮一下虱颗,我稱其為 碼妖 ~(?ω?)
擴展閱讀
《碼妖》
http://www.reibang.com/p/4ef0467b0af5