存储和读取用户数据:修订间差异
跳到导航
跳到搜索
(创建页面,内容为“导入sys ===存储数据=== sys.localStorage.setItem(key, value) 上面的方法需要两个参数,用来索引的字符串键值 key,和要保存的字符串数据 value。 假如我们要保存玩家持有的金钱数,假设键值为 gold: sys.localStorage.setItem('gold', 100); 对于复杂的对象数据,我们可以通过将对象序列化为 JSON 后保存: userData = { name: 'Tracer', level: 1, gold: 100 }; sys.lo…”) |
无编辑摘要 |
||
第28行: | 第28行: | ||
和 setItem 相对应,getItem 方法只要一个键值参数就可以取出我们之前保存的值了。对于上文中储存的用户数据: | 和 setItem 相对应,getItem 方法只要一个键值参数就可以取出我们之前保存的值了。对于上文中储存的用户数据: | ||
var userData = JSON.parse( | var userData = JSON.parse(sys.localStorage.getItem('userData')); | ||
第65行: | 第65行: | ||
读取时: | 读取时: | ||
var cipherText = | var cipherText = sys.localStorage.getItem('userData'); | ||
var userData=JSON.parse(encrypt.decrypt(cipherText,secretkey,256)); | var userData=JSON.parse(encrypt.decrypt(cipherText,secretkey,256)); | ||
注意:数据加密不能保证对用户档案的完全掌控,如果您需要确保游戏存档不被破解,请使用服务器进行数据存取。 | 注意:数据加密不能保证对用户档案的完全掌控,如果您需要确保游戏存档不被破解,请使用服务器进行数据存取。 |
2023年6月19日 (一) 16:46的最新版本
导入sys
存储数据
sys.localStorage.setItem(key, value)
上面的方法需要两个参数,用来索引的字符串键值 key,和要保存的字符串数据 value。
假如我们要保存玩家持有的金钱数,假设键值为 gold:
sys.localStorage.setItem('gold', 100);
对于复杂的对象数据,我们可以通过将对象序列化为 JSON 后保存:
userData = { name: 'Tracer', level: 1, gold: 100 }; sys.localStorage.setItem('userData', JSON.stringify(userData));
读取数据
sys.localStorage.getItem(key)
和 setItem 相对应,getItem 方法只要一个键值参数就可以取出我们之前保存的值了。对于上文中储存的用户数据:
var userData = JSON.parse(sys.localStorage.getItem('userData'));
移除键值对
当我们不再需要一个存储条目时,可以通过下面的接口将其移除:
sys.localStorage.removeItem(key)
清空数据
当我们不再需要已存储的用户数据时,可以通过下面的接口将其清空:
sys.localStorage.clear()
数据加密
对于单机游戏来说,对玩家存档进行加密可以延缓游戏被破解的时间。要加密存储数据,只要在将数据通过 JSON.stringify 转化为字符串后调用你选中的加密算法进行处理,再将加密结果传入 setItem 接口即可。
您可以搜索并选择一个适用的加密算法和第三方库,比如 encryptjs,将下载好的库文件放入你的项目。
存储时:
var encrypt=require('encryptjs'); var secretkey= 'open_sesame'; // 加密密钥 var dataString = JSON.stringify(userData); var encrypted = encrypt.encrypt(dataString,secretkey,256); sys.localStorage.setItem('userData', encrypted);
读取时:
var cipherText = sys.localStorage.getItem('userData'); var userData=JSON.parse(encrypt.decrypt(cipherText,secretkey,256));
注意:数据加密不能保证对用户档案的完全掌控,如果您需要确保游戏存档不被破解,请使用服务器进行数据存取。