Хорошо, поэтому у меня есть комплект для спрайтов в Swift, и у меня возникли проблемы с перезагрузкой моей GameScene после ее окончания игры.Swift, spritekit: Как перезапустить GameScene после игры? Остановить отставание?
Прямо сейчас, когда пользователь теряет всю свою жизнь, переменная gameIsOver
установлена в true
, которая приостанавливает определенные узлы внутри сцены, а также устанавливает таймер. По окончании этого таймера я перехожу на сцену с игрой. Из сцены Game Over пользователь может либо вернуться на родину, либо перезапустить игру.
Вот как я перейти к моей игре над сценой:
countdown(circle, steps: 120, duration: 5) {
//Performed when timer ends
self.gameSoundTrack.stop()
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = mainStoryboard.instantiateViewControllerWithIdentifier("GOViewController")
self.viewController!.presentViewController(vc, animated: true, completion: nil)
//Resetting GameScene
self.removeAllChildren()
self.removeAllActions()
self.scene?.removeFromParent()
self.paused = true
gameIsOver = false
}
Я Приостановить сцена здесь, потому что, если я не делаю, когда GameScene перезагружается gameIsOver
все еще установлен в true
и мое приложение падает , Я не знаю, почему это происходит, учитывая, что я установил gameIsOver
в false
.
После переезда из GameScene в мою игру по сцене и обратно в GameScene или из GameScene на мой домашний контроллер просмотра и обратно в GameScene пару раз мой счет в fps уменьшился настолько, что вся игра отстает от точки где геймплей невозможен.
Это приводит меня к мысли, что я не удаляю/распоряжаюсь GameScene должным образом каждый раз, когда я представляю свою игру по сцене.
Я считаю, что у меня такая же проблема, как здесь: In Swift on "game over" move from scene to another UIView and dispose the scene?, но я новичок в этом, и я не могу понять, как они решили свою проблему.
Как я могу полностью сбросить/удалить GameScene каждый раз, когда представляю свою игру поверх сцены, чтобы остановить отставание?
О, так что нет ничего плохого в этом? повторное вызов одной и той же сцены снова и снова? Вау. Я думал, что это будет «тяжело» для игрового движка. – msqar
Нет, это создаст новую сцену, и она не останется в старой сцене. Если бы вы использовали навигационный контроллер и использовали segues, это было бы иначе. Обязательно отметьте ответ как правильный, если он поможет вам. –
im not the post owner :(К сожалению, я не могу дать вам знак. Но вы помогли мне с этим, так что тот, кто дал вам досрочное голосование. – msqar