所以,我发现在我的SpriteKit游戏中有两种显示谷歌广告的方式......两种方式都有效,但我担心其中一种方式更有效等。
我的游戏只有1 urlPhoto
和1 ViewController
。与这两种实现的不同之处在于它们的创建时间和地点。
两者都要求:
GameScene
这是我首先实施它的方式:
in:GameViewController.swift
import GoogleMobileAds
var googleBannerView: GADBannerView!
这是第二种方式:
in:GameScene.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
}
}
}
我认为唯一真正的区别在于你如何设置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
}
,并且鉴于我的游戏只有1个ViewController,两者都有效......
哪种更好的实施?
答案 0 :(得分:1)
你绝对应该通过视图控制器这样做。从设计的角度来看,这更有意义。 GameScene的工作只是担心游戏内容。视图控制器的工作是管理和控制视图(因此名称为“View Controller。”)