Swift 多层次场景

Swift multiple level scenes

我正在尝试开发一个包含多个关卡的新游戏项目。我正在阅读这个问题 (Sprite Kit - Defining the variables for multiple scenes),了解使用尽可能少的重复代码来处理多个场景的最佳方法。答案当然是子类化。

假设我创建了 "baseScene",它是 SKScene 的子类。在这里,按照建议,我应该放置将在所有子类级别场景中共享的所有相关代码(播放器、对象、碰撞位掩码、触摸开始函数等)。 我在 baseScene 中使用了常用的 moveToView 函数来添加内容,它在多个场景(level1Scene、level2Scene 等)中完美运行,这些场景都是 baseScene 的子类。触摸开始功能等也是如此,所以没问题。

然而,我现在的问题是,在我的 "level1Scene" 中,我终其一生都无法弄清楚如何添加位于 baseScene 中的内容之上的内容,例如 1 级敌人、障碍物或背景。 我不能使用 didMoveToView,因为它是一个覆盖函数,并且会删除我在 baseScene 超类中添加的所有内容。

如果这是一个基本且可能是愚蠢的问题,我将不胜感激,我深表歉意,但我对 swift 相当陌生,尤其是场景子类化。

您可以在 level1Scene 中重写 baseScene 的函数,您只需要确保调用该方法的 super 版本。这里有几个例子,在你的 level1Scene class:

override func didMoveToView(view: SKView) {
    super.didMoveToView(view) // Calls `didMoveToView` of `baseScene`.

    // Additional setup needed for `level1Scene`...
} 

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    super.touchesBegan(touches, withEvent: event) // Calls `touchesBegan` of `baseScene`.

    // Additional stuff you want to do in `level1Scene`...
}