У меня есть игра SpriteKit с двумя сценами. GameScene и PlayScene. Я перехожу между двумя сценами. Недавно Xcode попросил меня добавить этот код в мой GameScene, хотя мне он не нужен, прежде чем игра закончилась гладко.Как мне вернуться к GameScene в SpriteKit?
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
Xcode не жалуется, когда я пишу этот код для перехода к PlayScene от GameScene:
var scene = PlayScene(size: self.size)
let skView = self.view as SKView!
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
scene.size = CGSizeMake(1536, 2048)
skView.presentScene(scene)
Однако, когда я использую этот почти идентичный код для перехода обратно к GameScene я получаю сообщение об ошибке:
var scene = GameScene(size: self.size)
let skView = self.view as SKView!
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
scene.size = CGSizeMake(1536, 2048)
skView.presentScene(scene)
сообщение об ошибке: не удается преобразовать тип Выражение в '(размер: @lvalue CGSize)' для типа 'GameScene?
Я удалил required init?
из GameScene, и ошибка исчезла, но затем Xcode дал мне еще одну ошибку, если я не положил required init?
назад.
Раньше я был в состоянии запустить свою игру без required init?
, но с другими кодовыми блоками.
Редактировать: Вот код конструктора GameScene
.
//called in viewDidLoad()
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
let skView = self.view as SKView
scene.size = CGSizeMake(1536, 2048)
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
Где находится код перехода? – jonogilmour
В функции обновления 'if player.position.y <= -1000' вызывается переход. Я использую аналогичный вызов для обоих переходов. –
Прежде всего, добавьте инициализатор обратно. Все, что вы делаете, это блокирование сообщения об ошибке, поставив перед ним еще одну ошибку. – jonogilmour