我正在努力开发一个新的游戏项目,我将在其中包含多个级别。我正在阅读这个问题(Sprite Kit - Defining the variables for multiple scenes)关于使用尽可能少的重复代码进行多重场景的最佳方法。答案当然是子类化。
所以说我创建了我的“baseScene”,它是SKScene的子类。在这里,正如所建议的那样,我应该将所有相关代码(播放器,对象,碰撞位掩码,触摸开始函数等)放在所有子类级别场景中共享。 我在baseScene中使用了通常的moveToView函数来添加内容,它在多个场景(level1Scene,level2Scene等)中都是完美的,它们都是baseScene的子类。触摸开始功能也是如此,所以没问题。
我现在的问题是,在我的“level1Scene”中,我不能为我的生活找出如何添加在baseScene之上的东西,例如1级敌人,障碍物或背景。 我不能使用didMoveToView,因为它是一个覆盖函数,并将删除我在baseScene超类中添加的所有内容。
我很感激任何支持,如果这是一个基本的,可能是愚蠢的问题我很抱歉,但我对swift很新,尤其是场景子类化。
答案 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`...
}