swift - NSUserDefaults 在其他场景调用

标签 swift sprite-kit scene

我听从了这个建议 post .我现在有

class GameOverScene: SKScene {

var score = 0

override func didMoveToView(view: SKView) {


   NSUserDefaults.standardUserDefaults().integerForKey("highscore")

   if score > NSUserDefaults.standardUserDefaults().integerForKey("highscore") {
      NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "highscore")
      NSUserDefaults.standardUserDefaults().synchronize()
   }

   NSUserDefaults.standardUserDefaults().integerForKey("highscore")

   }
}

我有更多代码可以在满足某个参数时将分数加 1。但我的问题是如何记忆起另一个场景中的 ("highscore") 键。游戏结束时调用另一个场景,称为 GameOverScene。

class GameOverScene: SKScene {

var gameOverLabel = SKLabelNode()

override func didMoveToView(view: SKView) {

    gameOverLabel.text = //here I want the highScore to be displayed
    gameOverLabel.fontColor = UIColor.blackColor()
    gameOverLabel.fontName = "Helvetica"
    gameOverLabel.fontSize = 100
    gameOverLabel.position = CGPointMake(frame.midX, frame.midY)
    self.addChild(gameOverLabel)

   }
}

我需要做什么才能将高分添加到我的场景中

最佳答案

线

NSUserDefaults.standardUserDefaults().integerForKey("highscore")

什么都不做(两次)。您可以通过将用户默认值分配给变量来从用户默认值中检索值,例如显示它们

let score = NSUserDefaults.standardUserDefaults().integerForKey("highscore")
label.text = "\(score)"

您可以像在 if 闭包的第一行中那样设置它。

关于swift - NSUserDefaults 在其他场景调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31686988/

相关文章:

ios - 根据物体的速度和旋转找到所需的点

swift - 了解 SwiftUI 2 中的场景/窗口组?

ios - 如何使用 SceneKit iOS 添加背面图像作为纹理

ios - 如何在spritekit场景编辑器中设置纹理过滤模式?

ios - 当 UIView 高度改变时更新 AutoLayout 约束

Swift 类、方法和属性限制

ios - 无法使用 Alamofire 4.1.0、Xcode 8 和 Swift 3 构建项目 - 没有这样的文件或目录

ios - 重置整个场景(Swift、SpriteKit)

swift - 粒子效果后如何从屏幕上删除 Sprite 节点

ios - 每次调用都很简单的方法分配内存而不释放内存