因此我尝试使用NSUserDefaults在场景中显示得分,使用以下内容:
var savedScore: Int = NSUserDefaults.standardUserDefaults().objectForKey("HighestScore") as! Int
let score = SKLabelNode()
score.text = toString(savedScore)
score.fontName = "Menlo-Regular";
score.fontColor = UIColor.blackColor();
score.position = CGPointMake(self.frame.size.width * 0.3, self.frame.size.height / 2)
self.addChild(score)
但是这是第一次运行,因为在" HighestScore"中没有任何内容。然而,它崩溃了应用程序试图加载零值。如何在第一次运行此场景时让分数标签显示0,然后显示" HighestScore"每隔一段时间。
答案 0 :(得分:1)
在这种特殊情况下,您应该使用integerForKey:
而不是objectForKey:
。
变化:
var savedScore: Int = NSUserDefaults.standardUserDefaults().objectForKey("HighestScore") as! Int
到:
var savedScore = NSUserDefaults.standardUserDefaults().integerForKey("HighestScore")
如果用户默认值中不存在,则会将savedScore
设置为零。