Swift多级场景

时间:2015-05-27 15:00:39

标签: ios swift sprite-kit

我正在努力开发一个新的游戏项目,我将在其中包含多个级别。我正在阅读这个问题(Sprite Kit - Defining the variables for multiple scenes)关于使用尽可能少的重复代码进行多重场景的最佳方法。答案当然是子类化。

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

我现在的问题是,在我的“level1Scene”中,我不能为我的生活找出如何添加在baseScene之上的东西,例如1级敌人,障碍物或背景。 我不能使用didMoveToView,因为它是一个覆盖函数,并将删除我在baseScene超类中添加的所有内容。

我很感激任何支持,如果这是一个基本的,可能是愚蠢的问题我很抱歉,但我对swift很新,尤其是场景子类化。

1 个答案:

答案 0 :(得分:3)

您可以在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`...
}