假设我有一个与此类似的javascript对象:
var Upgrades = {
upgrade1: {
name: 'First Upgrade',
info: 'First Upgrades info',
level: 1,
cost: 10,
},
upgrade2: {
name: 'Second Upgrade',
info: 'Second Upgrades info',
level: 1,
cost: 200,
},
upgrade3: {
name: 'Second Upgrade',
info: 'Second Upgrades info',
level: 1,
cost: 4000,
},
};
现在,将其保存到localStorage将是一件轻而易举的事。
localStorage.setItem('Upgrades', JSON.stringify(Upgrades));
问题是我每次升级都需要保存级别的值。保存整个对象会带来一些问题,其中一些是:
- 如果我想更改对象中的名称/信息,我必须删除我保存的本地存储文件,因为它会覆盖每个存储过的旧名称/信息的升级对象。时间玩家进入游戏。
- 为对象添加更多东西(升级)也会因为某些原因而崩溃游戏,我不太清楚为什么。每当我向对象添加更多升级时,我必须再次删除已保存的文件才能播放,从开始
(或更改已保存的文件,如果它与当前对象不同,那么它会正确应用保存,但我不知道该怎么做。这听起来有点讨厌,因为我猜你和#39;必须检查对象中的游戏版本是否相同,如果它没有编辑,那么它对应于当前版本对象。
对象中的所有内容都是根据级别(字符串除外)计算的。这就是我只需要保存等级的原因。
我如何操纵本地存储? 我想循环遍历所有升级,并将每个级别值保存到不同的localStorage中。所以localStorage升级1,2和3,只包含'级别:x'。然后同样循环,当玩家开始游戏以应用保存的等级。 但是,我只能使用1个localStorage文件吗?用上面的例子来做它会不好,为什么?还有更好的方法吗?
谢谢!
答案 0 :(得分:0)
我猜你可以从js对象中推断出你需要的信息并将它们保存在localStorage中,例如:
var _uogradesStored = {
upgrade1: {
level: 1
},
upgrade2: {
level: 1
},
upgrade3: {
level: 1
}
};
然后当您从存储中检索对象时,迭代“升级”项并获取所需的级别属性信息。
答案 1 :(得分:0)
我会升级一个数组并将该级别保存为选定版本的单独项目/索引。