2017-08-17 53 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