2017-08-17 54 views
0

我最近在我的游戏中实施了AdMob,并且无法在我的GameScene中显示广告。当应用程序加载时,我从GameViewController加载MainMenu的场景,像这样:在Swift中显示AdMob广告时发生场景变化

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews() 

    let skView = self.view as! SKView 
    skView.ignoresSiblingOrder = true 
    skView.showsFPS = true 
    skView.showsNodeCount = true 

    let mainMenu = MainMenu() 
    mainMenu.scaleMode = .aspectFill 
    mainMenu.size = view.bounds.size 
    skView.presentScene(mainMenu) 
} 

后,玩家按下开始,我改变现场GameScene,直到他们死了玩家玩游戏。我向GameScene添加了一个观察者,告诉GameViewController在广告死亡后展示广告。我创建了观察员viewDidLoad中是这样的:

var interstitial: GADInterstitial! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    interstitial = loadAd() 
    NotificationCenter.default.addObserver(self, selector: #selector(self.playerDied), name: NSNotification.Name("ShowAd"), object: nil) 
    NotificationCenter.default.post(name: NSNotification.Name("ShowingAd"), object: nil) 

} 

所以,当玩家死亡,我张贴“ShowAd”的通知中心和广告穿过.isReady检查,并显示。但是,在广告解散后,它将重新加载mainMenu场景,只是恢复gameScene。有谁知道显示广告的方式,但在显示广告后当前场景仍然是GameScene?谢谢。

回答

0

我猜测,当广告被解散时,viewController的func viewWillLayoutSubviews()被调用。尝试将所有func viewWillLayoutSubviews()中的代码放入override func viewWillAppear(_ animated: Bool)

+0

感谢您的回复。我尝试过,但没有奏效。然而,在尝试了你的之后,它让我想到了将它放在viewDidLoad中,它确实有效!感谢您帮助我解决问题! – Jake