如果这是一个初学者问题,请道歉,但我无法在线找到解决方案。我能找到的大多数帮助并没有解决我的问题,而且是针对Swift的早期版本。
我想在游戏中保持玩家的累积分数。他们第一次登录时会为零,但每次玩的时候都会增加,这取决于他们玩了多少轮。
我已经尝试了一些安排,但是现在我的AppDelegate文件中有:
UserDefaults.standard.set(Int(100),forKey:"TotalPoints")
然后,在玩家前进的GameScene的其他部分,我有:
let defaults=UserDefaults.standard
var CurrentExtras=defaults.integer(forKey: "TotalPoints")
CurrentExtras = CurrentExtras+100
UserDefaults.standard.set(Int(CurrentExtras),forKey:"TotalPoints")
这适用于游戏更新,但是一旦我关闭应用并重新启动它,它就会回到初始值。如何检查初始默认值以确保它不会覆盖默认值?我这样做是正确的吗?
答案 0 :(得分:3)
如果您在AppDelegate中设置默认值,则每次启动应用程序时都会将该值设置为100。
尝试更换:
UserDefaults.standard.set(Int(100),forKey:"TotalPoints")
为:
if UserDefaults.standard.value(forKey: "TotalPoints") == nil {
UserDefaults.standard.set(100, forKey: "TotalPoints")
}
或:
UserDefaults.standard.register(defaults: ["TotalPoints" : 100])
这样,它只会在应用程序首次启动时将密钥TotalPoints设置为100。