У меня длинный 2-й уровень, поэтому я разделил его на несколько файлов .sks. У меня есть «GameScene», где я могу присоединиться к ним в редакторе сцен с помощью перетаскивания. Он создает SKReferenceNodes. Я сделал это с успехом. Но я хотел бы загружать эти части лениво, когда это необходимо в коде (говорят, что это хорошая практика). Я терплю неудачу в этом.
Это конкретная часть кода:
if let nextPart = SKReferenceNode(fileNamed: "Scene2_city2") {
if self.childNodeWithName("Scene2_city2") == nil {
self.addChild(nextPart)
}
}
«Scene2_city2» — это имя файла .sks, а также имя сцены внутри файла.
Запустив код, я получаю сообщение об ошибке:
*** Завершение работы приложения из-за необработанного исключения «Невозможно добавить тело, оно уже существует в мире», причина: «Невозможно добавить тип тела: представленный объект: [имя: 'Scene2_city2' кадр: {{-0, -0}, {1024 , 768}} привязка:{0, 0}], уже существует в мире'
Это очень странно, потому что я сначала проверяю, прежде чем добавлять.
Вопрос: Как программно добавить SKReferenceNode в SKScene?
РЕДАКТИРОВАТЬ: Вот простой пример проекта на битбакете. Эталонная сцена добавлена для крана.
if let nextPart = SKReferenceNode(fileNamed: "Scene2_city2")
? Я думаю, вам не нужна дополнительная привязка... - person Whirlwind   schedule 04.04.2016