我有一个继承自标准 SKScene 的父类,命名为 -SKSParent。创建它是为了执行通过标识符创建自定义场景的父功能。问题是当我在 iOS 11 + 上启动项目时一切正常,但是当我在 ios 10.3.1 上启动时。我通过场景 ID 创建的对象不接受基于标识符的所需子类。所有对象都被创建为 SKSParent 类的对象,无论它们的标识符和创建的 .swift 文件如何。
也许有人遇到过这种行为
import SpriteKit
class Parent: SKScene {
}
class StoryScene: Parent {
}
class Story1: StoryScene {
}
class Story2: StoryScene {
}
class Story3: StoryScene {
}
选择故事的一些条件(例如,将当前用户进度保存到用户默认值,如故事名称)使用 for init by Name 从超类创建一些故事,如下所示:
let storyName = UserDefaults.standard.string(forKey: "current_user_story") ?? "Story1"
let currentStory = Parent(fileNamed: storyName)
/* some configurations with using object like Parent object */
/* presenting to user. */
在这种情况下,在 iOS 10 上,当前故事是“Parant”类的对象......在这种情况下,在 iOS 11 及更高版本上,它是特定类型的故事(*)的对象
事实上,在 ios 10 上,在这种情况下,对象会从 .sks 文件加载组件,但不会执行 .swift 文件中特定类的生命周期方法。