【问题标题】:SpriteKit Game LogicSpriteKit 游戏逻辑
【发布时间】:2017-03-08 01:03:38
【问题描述】:

我正在创建一个基于关卡的游戏,使用两个 SKSpriteNode 作为按钮转到下一个或上一个关卡,这将导致 GameViewController 呈现一个新场景。我使 SKScene 具有直接引用 gameviewController 的属性,以便调用当前的新场景函数,但据我了解,这打破了 MVC 模型。这很糟糕吗?什么是替代品?

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    iOS 编程的标准替代方案是一种称为委托的模式。首先,您创建一个协议来抽象出切换级别的实现。

    protocol LevelSelector: class {
        func didSelectNextLevel(from scene: SKScene)
        func didSelectPreviousLevel(from scene: SKScene)
    }
    

    GameViewController 实现此协议以更改适当级别的场景。每个实现关卡的场景都有:

    weak var levelSelector: LevelSelector?
    

    GameViewController 然后将自己设置为每个关卡场景的levelSelector

    scene.levelSelector = self
    

    当用户点击代表下一级和上一级按钮的SKNodes 时,调用相应的方法:

    levelSelector?.didSelectNextLevel(from: self)
    
    //OR
    
    levelSelector?.didSelectPreviousLevel(from: self)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2013-07-31
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多