0

如果这是一个初学者问题,请道歉,但我无法在线找到解决方案。我能找到的大部分帮助都没有解决我的问题,而且是针对以前版本的 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")

这适用于游戏更新,但是一旦我关闭应用程序并重新启动它,它就会恢复到初始值。如何检查初始默认值以确保它没有覆盖?我一开始就这样做正确吗?

4

1 回答 1

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。

于 2017-01-11T03:12:46.477 回答