2017-07-18 38 views
0

在我的遊戲中,我得到了4個不同的場景。 現在我想要添加一些AdMob橫幅廣告,但僅限於這四個場景中的兩個。僅在特定場景中顯示adMob橫幅; Swift

我試過這樣。

class GameViewController: UIViewController, GADBannerViewDelegate { 


var bannerView: GADBannerView! 



override func viewDidLoad() { 

    super.viewDidLoad() 


    if let view = self.view as! SKView? { 
     // Load the SKScene from 'GameScene.sks' 

     if var scene = StartScene(fileNamed: "StartScene") { 





      // Set the scale mode to scale to fit the window 
      scene.scaleMode = .aspectFill 

      // Present the scene 
      view.presentScene(scene) 



     } 



     if var scene = MainMenuScene(fileNamed: "MainMenuScene") { 



     bannerView = GADBannerView(adSize: kGADAdSizeBanner) 

     self.view.addSubview(bannerView) 
     let request = GADRequest() 
     request.testDevices = [kGADSimulatorID] 
     bannerView.rootViewController = self 
     bannerView.delegate = self 
     bannerView.adUnitID = "ca-app-pub-2567181742111069/9977523039" 
     bannerView.load(request) 
     bannerView.center = CGPoint(x: 329, y: 350) 

     } 


     view.ignoresSiblingOrder = true 

     view.showsPhysics = false 


     view.showsFPS = false 
     view.showsNodeCount = false 



     } 



} 

問題是,廣告仍然顯示在每個場景中。

有誰知道如何解決這個問題?

回答

3

廣告在每個場景中顯示,因爲bannerview附加到GameViewController(充當超級視圖),該GameViewController包含子場景。

創建和viewDidLoad()加載橫幅廣告,並把它藏在你不希望它出現在場景中,然後顯示它的場景,你想:

class GameViewController: UIViewController, GADBannerViewDelegate { 


var bannerView: GADBannerView! 



override func viewDidLoad() { 

    super.viewDidLoad() 

     bannerView = GADBannerView(adSize: kGADAdSizeBanner) 

     self.view.addSubview(bannerView) 
     let request = GADRequest() 
     request.testDevices = [kGADSimulatorID] 
     bannerView.rootViewController = self 
     bannerView.delegate = self 
     bannerView.adUnitID = "ca-app-pub-2567181742111069/9977523039" 
     bannerView.load(request) 
     bannerView.center = CGPoint(x: 329, y: 350) 


    if let view = self.view as! SKView? { 
     // Load the SKScene from 'GameScene.sks' 

     if var scene = StartScene(fileNamed: "StartScene") { 

      // Set the scale mode to scale to fit the window 
      scene.scaleMode = .aspectFill 

      // Present the scene 
      self.bannerView.isHidden = true 
      view.presentScene(scene) 
     } 



     if var scene = MainMenuScene(fileNamed: "MainMenuScene") { 

       self.bannerView.isHidden = false 

     } 


     view.ignoresSiblingOrder = true 

     view.showsPhysics = false 


     view.showsFPS = false 
     view.showsNodeCount = false 



     } 

} 

您還可以使用addSubViewremoveFromSuperview函數添加/刪除超級視圖(GameViewController)及其窗口