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 に答える