TimurTim
TimurTim

Reputation: 191

How to count SKScenes

How can one set up a counter that counts transitions between scenes? I want to show an ad every third game over. When player fails game is transitioned from PlayScene to GameOverScene. And at start of GameOverScene I want to present an Interstitial ad. I have no troubles with ads themselves, just with counting scenes.

That's what I'm currently trying: In PlayScene:

var adcounter = 0

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

In GameOverScene's didMoveToView:

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

It always prints 1

Transitions: PlayScene: When objects are hitting each other –

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: When hit "retry" –

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)
    }

Upvotes: 1

Views: 44

Answers (1)

WangYudong
WangYudong

Reputation: 4423

Just one more step and you will get what you want.

Firstly, initialize overAd object in viewDidLoad of GameViewController:

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

Modify your gameOver method in PlayScene like this:

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

Then after you transition to GameOverScene and get what saved in object for key overAd, you will find it now increments until you reset it.

Upvotes: 1

Related Questions