2016-12-12 6 views
1

У меня есть GameScene.sks, класс GameScene и GameViewController. Я могу создать протокол без использования sks, но я хочу сделать это, используя SKScene(fileNamed: "GameScene").Как правильно использовать протокол для вызова функции GameViewController?

Когда я использую scene.gameDelegate = self в GameViewController, 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

Инициализировать локальную переменную scene в качестве GameScene подкласса SKScene. Это будет выглядеть примерно так:

 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 Абсолютно, рад, что смогу помочь. –

 Смежные вопросы

  • Нет связанных вопросов^_^