我最近在我的游戏中实施了AdMob,而我在GameScene中显示广告时遇到了问题。当应用程序加载时,我从GameViewController加载MainMenu场景,如下所示:
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检查并显示。然而,在广告被解雇后,它重新加载了刚刚恢复gameScene的mainMenu场景。有没有人知道显示广告的方法,但广告显示后当前场景仍然是GameScene?感谢。
答案 0 :(得分:0)
我猜测广告被解散后正在调用viewController的func viewWillLayoutSubviews()
。尝试将func viewWillLayoutSubviews()
中的所有代码放入override func viewWillAppear(_ animated: Bool)