配置檔案格式如下圖
第一行是列型別說明,第二行是描述,第三行是對應屬性名稱,用於反射,之後行是實際資料
\r\n換行,\t分列,單元格內依次由+、|分割
long
string
string
string
string
intsid
活動標題
活動活動名字
活動描述
是否可見
idtittle
icon
name
desc
visible
1每日簽到領取大禮簽到2
8加官進祿
jiaguanjinjue_close+jiaguanjinjue_open+huodong_bg
加官進祿
1類結構樣式
public class activityconfig : config
核心邏輯:將文字檔案split後每行是乙個linedata,以id進行索引;需要讀取對應行資料時,反射建立對應類,反射賦值後返回
可選優化:獲取資料時可以指定列,不用一次全部反射;當屬性被賦值後,刪除linedata中對應的原始鍵值對
...
dictionarylinedata;
...config instance = assembly.createinstance(configtype.fullname) as config;
fieldinfo fields = instance.gettype().getfields();
fieldinfo field;
for (int m = 0; m < fields.length; m++)
...return instance
與上訴方案基本相同,除了使用二進位制替換文字,故讀取原始資料的方法略有不同
這是unity中最快最省gc的方案(懷疑unity直接使用memcpy之類手段在記憶體中從二進位制還原成class),但是對熱更新支援並不好,可以用於儲存結構不會變化的配置
專案使用lua開發,故嘗試了雲風的pbc,使用與protobuffer區別不大
在解析時,pbc做了一些優化,如果是內嵌的結構,不會直接解出來
下方**中,解析person時name、id、email會直接解析,phone卻不會解析,仍然是原始資料,直到真正用到才會解析
package tutorial;
message person
repeated phonenumber phone = 4;
}
pbc對多維陣列支援不好,二維陣列只能使用如下樣式實現
message arrint
repeated arrint arrarrint= 4;
解析後變成如下結構
arrarrint = },
}, ...
}
需要額外操作才能轉化為二維陣列
最終採用的方案,見這篇筆記
Unity儲存遊戲 二
在上次我們已經介紹了一些關於unity儲存遊戲的方法unity儲存遊戲 一 接下來將會介紹剩下的二種方法,分別為json方法以及xml方法。一 json json 是一種語言無關的傳送和接收資料的常用格式。可以使用它來跨平台的傳輸資料。json序列化 將儲存物件 轉化為json型別。json反序列化...
Unity遊戲存檔 (將遊戲資料儲存至本地文件)
在unity中 新增本地文件儲存遊戲資料 首先我們應該在unity中建立乙個c 指令碼,將其命名為inventory 指令碼不用掛在任何物體上,只需要在命名空間之前寫一句 如下 寫好之後儲存,在unity的檔案欄中右鍵就會發現,建立資料夾上方多了乙個inventory,就是我們 中的menuname...
Lua配置表儲存優化方案
近幾年移動端遊戲大熱,unity lua更是手遊行業的標配技術。如何有效利用有限的硬體條件,實現當前高品質 高規格的遊戲產品是持久不變的話題。lua作為乙個極為精簡的嵌入型指令碼語言,已經廣泛地用在了遊戲業,lua的存在一般是兩種場合,一種用於實現遊戲上層業務邏輯,一種則利用了lua語言本身靈活簡單...