菜单场景中不显示HighScore

时间:2016-01-29 05:38:09

标签: ios iphone swift sprite-kit

我有一个分数和高分系统的应用程序。我可以在游戏场景中显示高分,但在菜单场景中显示为0。在游戏场景中,我创建了变量

var highScore = 0

然后我说

if (score > highscore) { score = highscore

我在那个场景中显示它,我回到菜单场景并通过说

来访问它
highscoreLabel = actionscene.highscore

(actionscene是我游戏场景文件的名称。)自从 高分的原始值为0,显示0.如何解决此问题或以不同的方式对其进行编程?

1 个答案:

答案 0 :(得分:1)

您可以使用NSUserDefaults作为最简单的解决方案。在GameScene中:

let defaults = NSUserDefaults.standardUserDefaults()
 defaults.setInteger(10, forKey: "highscore")
 defaults.synchronize()

在另一个场景(MenuScene)中:

 let defaults = NSUserDefaults.standardUserDefaults()
 let highscore = defaults.integerForKey("highscore")

另请注意,synchronize()方法会定期自动调用,并使内存缓存与用户的默认数据库保持同步。

理想情况下,您可以让系统担心持久存储何时更新,但有时您想自己动手并且手动调用synchronize():

  

因为此方法会定期自动调用,   只有在您不能等待自动时才使用此方法   同步(例如,如果您的应用程序即将退出)或   如果要将用户默认值更新为磁盘上的内容,即使如此   你没有做任何改变。