Swift如何运行一个函数并从视图控制器中更改我的SKScene中的变量?

时间:2017-04-26 20:26:41

标签: ios swift admob

我已将Admob奖励视频广告投放到我的应用中。

广告的代码位于视图控制器中,并在场景游戏中触发。

但是,当我在视频播放完毕后奖励用户时,我想对我的SKScene中的变量执行操作。

这是视图控制器中用于奖励用户的代码:

func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didRewardUserWith reward: GADAdReward) {


    if let scene3 = GameOverMenu(fileNamed: "Gameover") {

    let oldCoin = UserDefaults.standard.integer(forKey: "COINSCORE")
    let newCoin = oldCoin + 20
    UserDefaults.standard.set(newCoin, forKey: "COINSCORE")
    UserDefaults.standard.synchronize()
   scene3.coinLabel.removeFromParent()
   scene3.createCoinScore()


    }
}

用户默认值确实会发生变化,但coinLabel不会删除也不会创建createCoinScore触发器。

 var scene3: GameOverMenu!

1 个答案:

答案 0 :(得分:0)

这为我修好了!

 func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didRewardUserWith reward: GADAdReward) {

    if let view = self.view as! SKView? {

    if let scene3 = GameOverMenu(fileNamed: "Gameover") {

        scene3.viewController = self
        scene3.scaleMode = .aspectFill
        view.presentScene(scene3)

        let oldCoin = UserDefaults.standard.integer(forKey: "COINSCORE")
        let newCoin = oldCoin + 20
        UserDefaults.standard.set(newCoin, forKey: "COINSCORE")
        UserDefaults.standard.synchronize()
        scene3.coinLabel.removeFromParent()
        scene3.createCoinScore()



    }
    }


}