所以,我发现了两种在我的 SpriteKit 游戏中显示谷歌广告的方法...两种方法都有效,但我担心其中一种更有效等。
我的游戏只有 1 个 ViewController
和 1 个 GameScene
。这两种实现的区别在于它们的创建时间和位置。
两者都需要:
import GoogleMobileAds
var googleBannerView: GADBannerView!
这是我最初实现它的方式:
在:GameViewController.swift
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
googleBannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
googleBannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
googleBannerView.rootViewController = self
let request: GADRequest = GADRequest()
googleBannerView.loadRequest(request)
googleBannerView.frame = CGRectMake(0, view.bounds.height - googleBannerView.frame.size.height, googleBannerView.frame.size.width, googleBannerView.frame.size.height)
self.view.addSubview(googleBannerView!)
if let skView = self.view as? SKView { //cast root as SKView
if skView.scene == nil {
//create and present gameScene
}
}
}
这是第二种方式:
在:GameScene.swift
override func didMoveToView(view: SKView) {
googleBannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
googleBannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
googleBannerView.rootViewController = self.view?.window?.rootViewController
let request: GADRequest = GADRequest()
googleBannerView.loadRequest(request)
googleBannerView.frame = CGRectMake(0, view.bounds.height - googleBannerView.frame.size.height, googleBannerView.frame.size.width, googleBannerView.frame.size.height)
self.view?.addSubview(googleBannerView!)
addChild(worldNode) //make whole world a node, create game nodes, in worldNode
switchToMainMenu() //go to menu menu
}
我认为唯一真正的区别是您如何设置 rootViewController
,鉴于我的游戏只有 1 个 ViewController,两者都可以工作...
哪种实现方式更好?
最佳答案
您绝对应该通过 View Controller 执行此操作。从设计的角度来看,这更有意义。 GameScene 的工作是只关心游戏内容。 View Controller 的工作是管理和控制 View (因此名称为“ View Controller ”。)
关于ios - 在 SpriteKit/Swift 中显示 GADBannerView 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34395874/