我正在尝试一个新游戏项目,其中包括多个级别。我正在阅读这个问题(Sprite Kit - Defining the variables for multiple scenes),该问题是使用尽可能少的重复代码来制作多个场景的最佳方法。答案当然是子类化。

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

但是现在我的问题是,在我的“level1Scene”中,我无法终生想出如何添加baseScene内容之上的内容,例如1级敌人,障碍物或背景。
我不能使用didMoveToView,因为它是覆盖函数,它将删除我在baseScene super class 中添加的所有内容。

我将不胜感激,如果这是一个基本的问题,可能是愚蠢的问题,我深表歉意,但是我是新手,尤其是场景子类化。

最佳答案

您可以在baseScene中覆盖level1Scene的功能,只需要确保调用该方法的super版本即可。这是level1Scene类中的一些示例:

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`...
}

10-04 19:33