我有一个分数和高分系统的应用程序。我可以在游戏场景中显示高分,但在菜单场景中显示为0。在游戏场景中,我创建了变量
var highScore = 0
然后我说
if (score > highscore) { score = highscore
我在那个场景中显示它,我回到菜单场景并通过说
来访问它highscoreLabel = actionscene.highscore
(actionscene是我游戏场景文件的名称。)自从 高分的原始值为0,显示0.如何解决此问题或以不同的方式对其进行编程?
答案 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():
因为此方法会定期自动调用, 只有在您不能等待自动时才使用此方法 同步(例如,如果您的应用程序即将退出)或 如果要将用户默认值更新为磁盘上的内容,即使如此 你没有做任何改变。