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
如果有任何帮助或支持,我将不胜感激。非常感谢
基本上解决方案是在我从开始场景切换到游戏场景时设置委托,而不是在开始时。
我最近一直在努力学习如何使用委托,而且实际上似乎大部分都理解了。但是我有一个问题。
我有 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
如果有任何帮助或支持,我将不胜感激。非常感谢
基本上解决方案是在我从开始场景切换到游戏场景时设置委托,而不是在开始时。