Swift SpriteKit 委托模式

Swift SpriteKit Delegate Pattern

我最近一直在努力学习如何使用委托,而且实际上似乎大部分都理解了。但是我有一个问题。

我有 1 个 GameViewController、1 个 StartScene 和 1 个 MenuScene

在我的 GameViewController 中,我有 2 个方法可以从 MenuScene 调用。到目前为止,我一直在使用 NSNotification,它工作正常,但我正在尝试使用委托。

所以我在MenuScene中设置了一个协议

 protocol MenuSceneDelegate {
 func gameOver()
 func showGameCenter()
}

我是这样引用它的

 var menuSceneDelegate: MenuSceneDelegate?

在 GameViewController 中,我在顶部添加了 MenuSceneDelegate。到目前为止一切都非常标准。然而,我遇到的主要问题是,当我像这样在 GameViewController 中设置委托时

 let skView = view as! SKView!
    var scene = StartScene(size: skView.bounds.size)

    skView.ignoresSiblingOrder = true
    scene.scaleMode = .ResizeFill

    skView.presentScene(scene)

    scene.menuSceneDelegate = self   //Sets delegate to StartScene not MenuScene

它只适用于StartScene。如何将 GameViewController 委托从 StartScene 设置为 MenuScene。如果我首先展示 MenuScene,一切都很好。但是,我首先介绍 StartScene,因此我试图了解如何将委托设置为 MenuScene。

我在下面尝试过类似的方法,但它不起作用而且看起来不对

 var menuScene = MenuScene(size: skView.bounds.size)
 menuScene.menuSceneDelegate = self

如果有任何帮助或支持,我将不胜感激。非常感谢

基本上解决方案是在我从开始场景切换到游戏场景时设置委托,而不是在开始时。