我正在制作一个有三个场景的游戏。
在GameScene中,我拥有所有游戏。我可以使用以下代码在此场景中显示Highscore:
var defaults = NSUserDefaults()
var highscore = defaults.integerForKey("highscore")
if(balloonDestroyed > highscore)
{
defaults.setInteger(balloonDestroyed, forKey: "highscore")
}
var highscoreShow = defaults.integerForKey("highscore")
var highscoreLabel = SKLabelNode()
highscoreLabel.text = "highscore : \(highscoreShow)"
highscoreLabel.fontColor = SKColor.blackColor()
highscoreLabel.position = CGPointMake(200, 200)
addChild(highscoreLabel)
我的第一个问题是当balloonDestroyed>高分,highscoreLabel没有更新 第二个问题是:我如何将这个高分转移到PresentScene和GameOverScene
有人可以帮助我吗?
谢谢!
答案 0 :(得分:1)
为了能够在GameScene之外使用高分,你需要让它成为全球性的。您可以通过创建一个新类并在那里定义它,或者只是在GameScene括号之外定义它来实现。如果这两行:
var defaults = NSUserDefaults() var highscore = defaults.integerForKey(" highscore")
位于其中一组:{},它不是全局的,您的使用受到限制。
答案 1 :(得分:0)
谢谢ClareHuxtable !!
对于像我这样的其他新程序员,我在这里发布我的代码,将Highscore转移到其他场景:
所以我在我的GameViewController中初始化全局变量(在第一个" {"之前)使用以下代码:
var defaults = NSUserDefaults()
var highscore = defaults.integerForKey("highscore")
在我的GameScene:
if(score > highscore)
{
defaults.setInteger(score, forKey: "highscore")
}
并在我想要显示高分的新场景中:
var highscoreShow = defaults.integerForKey("highscore")
var highscoreLabel = SKLabelNode()
highscoreLabel.text = "highscore : \(highscoreShow)"
highscoreLabel.fontColor = SKColor.blackColor()
highscoreLabel.fontName = "Chalkduster"
highscoreLabel.fontSize = 15
highscoreLabel.horizontalAlignmentMode = .Right
highscoreLabel.position = CGPointMake(self.size.width - 10, 10)
addChild(highscoreLabel)
我希望这能帮助别人: - )