
存储数据
|
165
解决方案
答案很简单:不抛弃数据。如果游戏能够存储数据,那么它就应该保存游戏的状态。
在一个
iOS
游戏中,不要以为用户会手动保存游戏,我们应当利用每个可能的机会
自动保存数据。
讨论
如果因为一个呼入的电话而导致用户丢失了他的游戏进度,这是最令人糟心的事情。
不要为此惹恼你的用户:请定期保存游戏的状态!
5.9
游戏中的财富值
问题
我们需要记录游戏中的资源数,如玩家所拥有的财富值。
解决方案
这种功能需求会因不同游戏而异。当然,在许多游戏中,财富值都是比较常见的,
因此这里给出了一个处理的办法。
在这个例子中,假设有两种不同的货币:钻石和金币。钻石是固定资产,从这一关
到下一关都存在。金币是消耗品,当游戏结束时会清零。为了同时支持这两种货币,
我们用一个计算属性来存放钻石数,并将这个值放到
UserDefaults
中,同时将金
币数放到内存里(当游戏结束时清零):
class CurrencyManager {
var gold : Int = 0
var gems : Int {
set(value) {
//
将钻石数放到用户
Defaults
系统
UserDefaults.standard.set(value, forKey: "gems")
}
get {
//
从用户
Defaults
系统取回钻石数
return UserDefaults.standard.integer(forKey: "gems")