Swift:高分/默认值
我对默认设置有问题 我遵循了史蒂夫的回答: 现在,我有个问题。当我的游戏场景即将结束时,在转移到GameOverScene之前,我会执行以下操作:Swift:高分/默认值,swift,sprite-kit,nsuserdefaults,Swift,Sprite Kit,Nsuserdefaults,我对默认设置有问题 我遵循了史蒂夫的回答: 现在,我有个问题。当我的游戏场景即将结束时,在转移到GameOverScene之前,我会执行以下操作: if scene.score > Score.highScore { var defaults = NSUserDefaults() defaults.setInteger(scene.score, forKey: "highScore") println("score1, highsc
if scene.score > Score.highScore {
var defaults = NSUserDefaults()
defaults.setInteger(scene.score, forKey: "highScore")
println("score1, highscore1")
println(scene.score)
println(Score.highScore)
}
你可以看到,我将游戏场景的分数与最高分数进行比较,然后将最高分数的整数设置为玩家所达到的场景分数。
然而,程序打印正确地输出了当前分数,保持高分不变,为0。
在我尝试之前:
Score.HighScore = scene.score // changing Score.HighScore to the scene.score manually.
不幸的是,它没有起作用。
下面是完整的HighScore类,它负责保存和检索HighScore:
谢谢你的帮助
编辑:或者,也许有人知道将某些内容保存到NSUserDefaults的更简单的解决方案,而不需要那么复杂 Steve在相关问题中的回答根本没有使用NSUserDefaults,而是从应用程序文档目录中的“
highScore.archive
”文件存储中存档和检索高分
您提出的任何解决方案都应该忽略用户默认值,而是依赖于您实例化的HighScore对象(该对象加载并保存到
HighScore.archive
文件) Score.highScore=scene.Score
你可能错过了这个吗?如你所见,我已经尝试过了。Score.highScore与Score.highScore不一样。那么我该如何从不同的场景访问存档并修改它呢?当你在不同的场景中实例化(或创建)该对象时,它将加载当前保存在“highScore.archive
”文件中的高分。因此,您需要确定的是,前一个场景已经正确地保存了新的高分(例如,史蒂夫回答中的“SaveHighScore().ArchiveHighScore(highScore:score)
”位)。要加载高分,您可以执行以下操作:var retrievedhightscore=SaveHighScore()。RetrieveHighScore()作为HighScore
。有道理吗?有道理!现在它打印出了分数,以及分数的正确整数的高分。但是(我知道,我很痛苦,我很抱歉),当我把RetrieveHighScore放在我的SKLabel中时,它得出了这样的结论:分数:5,highscore:看到Steve用RetrieveHighScore做了什么吗?他将其制作成一个highscore对象
,并能够在其上执行println
。确保SaveHighScore.ArchiveHighScore()
。