Я создал игру с кнопкой паузы, которая показывает новый модальный ViewController с меню паузы поверх текущего и ставит сцену на паузу с помощью следующей функции (которая находится в сцене и вызывается через протокол и делегат):
func pause(isPaused: Bool) {
let pauseAction = SKAction.run {
self.view?.isPaused = isPaused
}
self.run(pauseAction)
}
Приостановка сцены и отображение контроллера модального вида работает, но когда я возвращаюсь на сцену с перемоткой, сцена не прерывается.
Кнопка паузы находится в том же виде, что и сцена.
Для связи со сценой из меню «Пауза» я использую режим раскрутки, где я вызываю функцию паузы через протокол и делегирую.
Я представляю меню паузы с этим:
@IBAction func PauseMenuButton(_ sender: Any) {
let vc = storyboard!.instantiateViewController(withIdentifier: "PauseMenuVC")
vc.providesPresentationContextTransitionStyle = true
vc.definesPresentationContext = true
vc.modalPresentationStyle = .overCurrentContext
present(vc, animated: true, completion: nil)
SceneIsPausedDelegate.pause(isPaused: true)
}
и вернитесь на сцену с этим:
@IBAction func unwindToGameVC(segue: UIStoryboardSegue) {
SceneIsPausedDelegate.pause(isPaused: false)
}
Я думаю, что функция никогда не вызывается, потому что она находится в сцене, поскольку она приостановлена, и выполнение не выполняется.