SpriteKit游戏逻辑

时间:2017-03-08 01:03:39

标签: swift sprite-kit

我创建了一个基于关卡的游戏,使用两个SKSpriteNodes作为按钮转到下一个或上一个关卡,这将导致GameViewController呈现一个新场景。我让SKScene有一个直接引用gameviewController的属性,以便调用一个现在的新场景函数,但据我所知,这打破了MVC模型。这不好吗?有什么替代方案?

1 个答案:

答案 0 :(得分:7)

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

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

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

weak var levelSelector: LevelSelector?

GameViewController然后将自己设置为每个级别场景的levelSelector

scene.levelSelector = self

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

levelSelector?.didSelectNextLevel(from: self)

//OR

levelSelector?.didSelectPreviousLevel(from: self)