是什麽?
主要功能
1.就是上面說的,轉化為ScriptObject數據類,這裏分為兩種:
a.分離壹個Excel表中的所有sheet為單獨的壹個數據體。
b.把壹個Excel表中所有的sheet合成在壹個數據體中。
註意:第二種exce中必須每壹個sheet的數據項是壹樣並且位置也是相同的
2.可以選擇每壹個sheet或者sheet中的數據單項是否被生成到數據體中。
3.系統會自動識別每壹個數據單項的數據類型與數據參數名,當然也可以用戶更改。
4.在創建數據體完成後,再改表中的數據,數據體自動更新。當然如果是增加刪除單項數據,就需要重新生成數據體。
使用方法
1.在Project視窗下選中需要生成數據類的Excel表,右鍵菜單,選擇“Read Excel”。
5.然後在遊戲載入時調用壹下下面這壹句話。
6.實際運用時數據分為兩類:
a.分離單數壹個sheet的數據體訪問。
testObj_Sheet1是妳的數據類,然後使用GetData方法傳入id即可返回數據體實例。
b.合並sheet的數據體訪問方式。
testObj是妳的數據類,然後使用GetSheet方法獲得sheet,這裏自動幫用戶生成了sheet的枚舉,用戶可以直接使用枚舉來獲得sheet,然後的方法和上壹種壹樣。
原理
unity使用.net的api是2.0的,所以沒有可以直接讀取Excel哪部分源碼。就選擇使用了NPOI這樣壹個開源框架。這裏有幾個學習NPOI的傳送門, 官網 、 官網繁體文檔 、 官網英文文檔 、 CSDN博客推薦看這個 ,具體的就不詳細講解了。
讀取到數據後再使用try測試數據類型,自動填充數據類型。這裏就是為什麽浮點型需要用戶自己設置的原因。
使用的ScriptObject這個Unity給出可以用來存數據的資源。這個其實也可以更改成Json文件,這樣服務器跟客戶端都可以用了。不過ScriptObject可以很直觀的看到數據的儲存。
這裏用到壹個資源變化的回調OnPostprocessAllAssets,這個是需要繼承於AssetPostprocessor這類的, 詳細可以看這裏 。
這裏因為字典不能序列化所以需要在遊戲加載時,初始化數據壹次。
原理就說這麽多吧,再具體的大家可以看看源碼。