存儲數據
cc.sys.localStorage.setItem(key, value)
上面的方法需要兩個參數,用來索引的字符串鍵值 key
,和要保存的字符串數據 value
。
假如我們要保存玩家持有的金錢數,假設鍵值爲 gold
:
cc.sys.localStorage.setItem('gold',
100);
對於複雜的對象數據,我們可以通過將對象序列化爲 JSON 後保存:
userData = {
name: 'Tracer',
level: 1,
gold: 100
};
cc.sys.localStorage.setItem('userData', JSON.stringify(userData));
讀取數據
cc.sys.localStorage.getItem(key)
和 setItem
相對應,getItem
方法只要一個鍵值參數就可以取出我們之前保存的值了。對於上文中儲存的用戶數據:
var userData = JSON.parse(cc.sys.localStorage.getItem('userData'));
移除鍵值對
當我們不再需要一個存儲條目時,可以通過下面的接口將其移除:
cc.sys.localStorage.removeItem(key)
數據加密
對於單機遊戲來說,對玩家存檔進行加密可以延緩遊戲被破解的時間。要加密存儲數據,只要在將數據通過JSON.stringify
轉化爲字符串後調用你選中的加密算法進行處理,再將加密結果傳入 setItem
接口即可。
您可以搜索並選擇一個適用的加密算法和第三方庫,比如 encryptjs, 將下載好的庫文件放入你的項目,存儲時:
var encrypt=require('encryptjs');
var secretkey= 'open_sesame'; // 加密密鑰
var dataString = JSON.stringify(userData);
var encrypted = encrypt.encrypt(dataString,secretkey,256);
cc.sys.localStorage.setItem('userData', encrypted);
讀取時:
var cipherText = cc.sys.localStorage.getItem('userData');
var userData=JSON.parse(encrypt.decrypt(cipherText,secretkey,256));
注意 數據加密不能保證對用戶檔案的完全掌控,如果您需要確保遊戲存檔不被破解,請使用服務器進行數據存取。