【问题标题】:Swift SpriteKit Delegate PatternSwift SpriteKit 委托模式
【发布时间】:2015-08-24 20:45:29
【问题描述】:

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

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

在我的 GameViewController 中,我想从 MenuScene 调用 2 个方法。到目前为止,我一直在使用 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

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

【问题讨论】:

    标签: ios swift delegates


    【解决方案1】:

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

    【讨论】:

    • 这是什么意思?
    • 这是个好问题,哈哈。这是一个古老的答案。我稍后会更新它
    • 很抱歉打扰您。几天来,我一直在爬上和爬下委托/协议和继承阶梯。每次上两步,后退三步。
    • 呵呵。一旦你掌握了窍门,这还不错。我稍后会更新
    • 关于继承/子类化查看这个答案。不确定它是否有用。我去年问过这个stackoverflow.com/questions/30486232/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    相关资源
    最近更新 更多