# cocos-csd-parser ## 起源 手key各個元件與索引它們實在是蛋疼 所以寫了小工具協助生成csd的class與Properties 邏輯與介面分開 熱重載比較好處理(不重開直接Reload code) ## 已實作功能 * 變數重名更名 * 元件名稱轉變數 如果重名則會加-n * 變數名稱調整 * 如果非法名稱會調整成合法變數名稱 * ~~忽略特定元件~~ 目前有BUG * 元件名稱為@開頭則不會被列入enum內 * 邏輯與元件索引文件分離 * 方便將來更新索引規則 更新只要覆蓋掉Properties * 自動放置 * 如果csd是在project內 則會依照規則將lua生成到對應的資料夾內 不用再手動複製 * 如果找不到對應資料夾則會詢問該如何處理 * ![image](https://hackmd.io/_uploads/Skry9zNoA.png =10%x)Config設定InannaLua位置 ![image](https://hackmd.io/_uploads/rJG2YzEsA.png) ![image](https://hackmd.io/_uploads/B1N6FG4oA.png) * require * class會自動require properties 不用再自行輸入路徑 * 目前有遇到路徑大小寫問題 如果load不到 得檢查一下路徑大小寫 * properties支援require要用到的lua檔 * animation初始化與AnimationKeys 生成 * ![image](https://hackmd.io/_uploads/By2WszEjA.png =5%x)~~自動button事件綁定初始化~~ ~~* 添加事件進[ButtonEvents](#ButtonEvents)~~ * 改使用[ButtonHelper](https://hackmd.io/@Hs005SbpR4yt-SGz7u4FSw/ryjHjM4jR)綁點擊事件 * 將來擴充性調整 * ~~利用反射讓以後擴充生成規則不會影響到其他程式碼~~ 不知道當初在寫三小 * 降低CocosStudio調整Hiearachy對程式碼的影響 * 刪除或更名節點目前無法自動校正 * editbox自動生成 * 元件名字含有'editbox'的話 會自動轉成[EditoBoxProxy](https://hackmd.io/@Hs005SbpR4yt-SGz7u4FSw/HyJHrJfGC) ## 元件命名規則 * @xxxxx * 忽略生成該元件的enum與變數 * -editbox- * 不考慮大小寫 * 名字內含有此關鍵字 則會轉成editbox ## 關係 ![csd-parser.drawio (1)](https://hackmd.io/_uploads/ByYd523-R.png) 利用View的csd生成對應的View.lua和ViewProperties.lua 需要使用該Properties的view就自行Require並呼叫Bind綁定元件 之後藉由m_properties取需要的元件即可(如下圖) ![image](https://hackmd.io/_uploads/r11yXhhWC.png) ### View.lua 會有基本function 記得確認一下路徑 ![image](https://hackmd.io/_uploads/r1Z6GybGC.png) 請參考[UIManager.IUIView](https://hackmd.io/@Hs005SbpR4yt-SGz7u4FSw/Bkv-6MEsR#IUIView) ### ViewProperties.lua 結構會分成 * Enum: AnimationKeys * animation keys * Enum: NodeNames * 元件列表 * Bind: Function * 元件索引以及事件綁定 * 只會有一個function - Bind 負責給外部呼叫去關聯元件 ![image](https://hackmd.io/_uploads/Byjys3nZC.png) ## 使用方法 拖曳csd丟進exe ![image](https://hackmd.io/_uploads/r1g5mhnbC.png) * 可一次拖曳多個 * 產生的lua檔會跟對應的csd生成在同一個資料夾 ### 新介面製作 生成好後把lua檔丟到對應的位置 ### 舊介面調整 把新產的Properties.lua覆蓋掉原本的Properties就好 ## ButtonEvents Button類別的元件會在 'self.m_props.buttonEvents' 底下自動產生對應的事件 如果要使用的話 可以在Ctor內綁定事件 ![image](https://hackmd.io/_uploads/rJXmRmff0.png) ~~[載點](https://drive.google.com/file/d/1M5PryBgiDdod4nYc0XXZHtKjo8kkANGY/view?usp=drive_link)~~ 目前放在Inanna/Tools/CSDParser裡面