如何计算SKScenes

时间:2015-10-01 09:46:10

标签: swift sprite-kit

如何设置一个计算场景间转换的计数器?我希望每三个游戏结束一次广告。当玩家失败时,游戏将从PlayScene转换为GameOverScene。在GameOverScene开始时,我想展示一个非页内广告。我对广告本身没有任何麻烦,只是计算场景。

这就是我目前正在尝试的内容: 在PlayScene中:

var adcounter = 0

func gameOver() {
adcounter++
NSUserDefaults.standardUserDefaults().setInteger(adcounter, forKey: "overAd")

在GameOverScene的didMoveToView:

var counterAd : Int = NSUserDefaults.standardUserDefaults().integerForKey("overAd")
    println("ad status \(counterAd)")

总是打印1

过渡: PlayScene: 当物体相互碰撞时 -

func gameOver() {
    println("TOTAL GAMEOVER")
    adcounter++
    NSUserDefaults.standardUserDefaults().setInteger(score, forKey: "overScore")
    NSUserDefaults.standardUserDefaults().setInteger(adcounter, forKey: "overAd")
    var scene = GameOverScene(size: self.size)
    var transition:SKTransition = SKTransition.crossFadeWithDuration(0.5)
    let skView = self.view as SKView!
    skView.ignoresSiblingOrder = true
    scene.scaleMode = .AspectFill
    skView.presentScene(scene, transition: transition)
}

GameOverScene:点击"重试" -

func reset() {
    var scene = PlayScene(size: self.size)
    var transition:SKTransition = SKTransition.crossFadeWithDuration(0.5)
    let skView = self.view as SKView!
    skView.ignoresSiblingOrder = true
    scene.scaleMode = .AspectFill
    skView.presentScene(scene, transition: transition)
    }

1 个答案:

答案 0 :(得分:1)

再多一步,你会得到你想要的东西。

首先,在 GameViewController overAd中初始化viewDidLoad对象:

NSUserDefaults.standardUserDefaults().setInteger(0, forKey: "overAd")

修改 PlayScene 中的gameOver方法,如下所示:

func gameOver() {
    var adcounter = NSUserDefaults.standardUserDefaults().integerForKey("overAd")
    adcounter++
    NSUserDefaults.standardUserDefaults().setInteger(adcounter, forKey: "overAd")
}

然后,在转换到 GameOverScene 并获取保存在密钥overAd的对象中的内容后,您会发现它现在会递增,直到您重置它为止。