从不同的类更新得分变量

时间:2015-05-21 22:21:03

标签: xcode swift variables updating

我试图在比赛结束后让我的分数结转到一个新的场景,当这种情况发生时,得分在0时出现。我的PlayScene中的分数设置为0默认但我需要它可以在PlayScene结束时阅读ScoreScene中的分数。请帮助!!

import SpriteKit

import AVFoundation

class PlayScene: SKScene, SKPhysicsContactDelegate {

     let scoreText = SKLabelNode(fontNamed: "System-Bold")
     var score = 0

     override func didMoveToView(view: SKView) {

             self.scoreText.text = "0"
             self.scoreText.fontSize = 42
             self.scoreText.position = CGPointMake(CGRectGetMidX(self.frame),          CGRectGetMaxY(self.frame) / 1.075)


 func didBeginContact(contact:SKPhysicsContact) {

    var scene = ScoreScene(size: self.size)
    let skView = self.view as SKView!
    skView.ignoresSiblingOrder = true
    scene.scaleMode = .ResizeFill

    scene.size = skView.bounds.size
    skView.presentScene(scene)

 func blockRunner() {

           for(block, blockStatus) in self.blockStatuses {
           var thisBlock = self.childNodeWithName(block)
           if blockStatus.shouldRunBlock() {
            blockStatus.timeGapForNextRun = random()
            blockStatus.currentInterval = 0
            blockStatus.isRunning = true
        }

        if blockStatus.isRunning {
            if thisBlock!.position.x > blockMaxX {
                thisBlock!.position.x -= CGFloat(self.groundSpeed)

            }else {
                thisBlock!.position.x = self.origBlockPositionX
                blockStatus.isRunning = false
                self.score++
                if ((self.score % 10) == 0) {
                    self.groundSpeed++
                }
                self.scoreText.text = String(self.score)

            }
        }else {
            blockStatus.currentInterval++
        }
    }
}

现在当游戏结束时,它会切换到低于

的分数场景
     class ScoreScene: SKScene {
       var playScene = PlayScene()
       let scoreText = SKLabelNode(fontNamed: "System-Bold")

  override func didMoveToView(view: SKView) {

       self.scoreText.text = "score: \(playScene.score)"
       self.scoreText.fontSize = 42
       self.scoreText.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMaxY(self.frame) / 1.075)

1 个答案:

答案 0 :(得分:1)

您需要创建一个单独的模型来保存您的数据,以便您可以从应用程序的不同部分访问它,我通常使用单例方法,因此我只能创建一次类,并在需要时随时访问它的值。我会做什么:

  • 创建一个新的类播放器,保留播放器的详细信息,如
  • 得分使此类成为单身人士使用此类来填充
  • 通过游戏的所有场景得分值

有关swift here(包括单身人士)

中设计模式的更多详情

你会在here

中找到很多针对单身人士的代码演示