0

我有一个继承自标准 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 文件中特定类的生命周期方法。

4

0 回答 0