我正在尝试开发一个新的游戏项目,其中将包含多个级别。我正在读这个问题(Sprite Kit - 定义多个场景的变量)关于使用尽可能少的重复代码来完成多个场景的最佳方法。答案当然是子类化。
假设我创建了“baseScene”,它是 SKScene 的子类。在这里,按照建议,我应该放置所有相关代码(玩家、对象、碰撞位掩码、触摸开始函数等),这些代码将在所有子类级别场景中共享。
我在 baseScene 中使用了常用的 did moveToView 函数来添加内容,它在多个场景(level1Scene、level2Scene 等)中完美运行,这些场景都是 baseScene 的子类。触摸开始功能等也是如此,所以没有问题。
然而,我现在的问题是,在我的“level1Scene”中,我一生都无法弄清楚如何添加位于 baseScene 中的内容之上的内容,例如 1 级敌人、障碍物或背景。
我无法使用 didMoveToView,因为它是一个覆盖函数,并且会删除我在 baseScene 超类中添加的所有内容。
如果这是一个基本且可能愚蠢的问题,我将不胜感激,并表示歉意,但我对 swift 特别是场景子类化还很陌生。
您可以覆盖以下功能baseScene
in level1Scene
,你只需要确保你打电话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`...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)