2016-12-12 3 views
1

私はGameScene.sks、GameSceneクラス、GameViewControllerを持っています。私はsksを使用せずにプロトコルを作成することができますが、SKScene(fileNamed: "GameScene")を使ってこれを行いたいと思います。プロトコルを正しく使用してGameViewControllerの関数を呼び出す方法は?

GameViewControllerでscene.gameDelegate = selfを使用すると、viewDidload() 私はValue of type 'SKScene' has no member gameDelegateエラーを受け取ります。

どうすればこの問題を解決できますか?

protocol GameDelegate { 

    func createAds() 
} 

GameSceneクラス:

class GameScene: SKScene { 

    var gameDelegate: GameDelegate! 

    ... 

GameViewControllerのviewDidLoad:

 if let view = self.view as! SKView? { 

      if let scene = SKScene(fileNamed: "GameScene") { 

       scene.scaleMode = .aspectFill 
       scene.gameDelegate = self // Value of type 'SKScene' has no member gameDelegate 

       gameState = .playing 
       view.presentScene(scene) 
      } 

      view.ignoresSiblingOrder = true 

     } 

答えて

3

SKSceneのごGameSceneサブクラスとしてローカル変数sceneを初期化します。 これは次のようになります。

 if let view = self.view as! SKView? { 

     // change type of optionally bound constant 'scene' 
     if let scene = GameScene(fileNamed: "GameScene") { 

      scene.scaleMode = .aspectFill 
      scene.gameDelegate = self 

      gameState = .playing 
      view.presentScene(scene) 
     } 

     view.ignoresSiblingOrder = true 

    } 

またGameViewControllerクラスはGameDelegateプロトコルに準拠し、必要なインターフェイスのすべてのメソッドを実装していることを確認してください。

+0

ありがとう、私はそれなしで多くのことを試しました。あなたは私の時間を救った。 – tobeiosdev

+0

@tobeiosdev絶対に、私は助けることができてうれしい。 –

関連する問題