Custom Class Sprite Kit, не работает init по имени для iOS 10 (Xcode 11.3.1) - PullRequest
0 голосов
/ 02 марта 2020

У меня есть родительский класс, который унаследован от стандартного SKScene и называется - SKSParent. Он создан для выполнения родительской функции создания пользовательских сцен по идентификатору. Проблема в том, что при запуске проекта на iOS 11 + все работает правильно, но при запуске на ios 10.3.1. Мои объекты, которые я создаю по идентификатору сцены, не принимают желаемый дочерний класс на основе идентификатора. Все объекты создаются как объекты класса 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 и выше это объект определенного c тип Story (*)

Дело в том, что на ios 10 в таких случаях объекты загружают компоненты из файла .sks, но не выполняют методы жизненного цикла определенного класса из .swift файл.

...