【问题标题】:HighScore Not Displaying In Menu Scene高分未显示在菜单场景中
【发布时间】:2016-01-29 05:38:08
【问题描述】:

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

var highScore = 0

那我说

if (score > highscore) { score = highscore

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

highscoreLabel = actionscene.highscore

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

【问题讨论】:

    标签: ios iphone swift sprite-kit


    【解决方案1】:

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

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

    在另一个场景(MenuScene)中:

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

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

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

    因为此方法会定期自动调用, 仅当您不能等待自动 同步(例如,如果您的应用程序即将退出)或 如果您想将用户默认更新为磁盘上的内容,即使 您没有进行任何更改。

    【讨论】:

    • 那行不通。我在游戏场景中设置了默认值。我也在菜单场景中尝试过,但它没有用。每次我关闭并打开应用程序时它都会保存,在游戏场景中,当我从菜单场景中引用高分时,它认为该值为 0 @Whirlwind
    • @JOSH 您是否尝试将分数保存在 GameScene 中并从 MenuScene 中读取?因为这就是这段代码的作用,它对我有用......
    • 对不起,我写错了你的代码,我现在可以工作了。非常感谢!我真的很感激!
    • @JOSH 没问题 :) 很高兴听到它现在工作。如果此答案帮助您解决了问题,请将其标记为已接受。
    猜你喜欢
    • 2022-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多