如何在其他场景中传输高分 - iOS 8 [SWIFT]

时间:2014-09-17 17:20:49

标签: iphone swift ios8

我正在制作一个有三个场景的游戏。

  1. PresentationScene
  2. GameScene
  3. GameOverScene
  4. 在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

    有人可以帮助我吗?

    谢谢!

2 个答案:

答案 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)

我希望这能帮助别人: - )