Я использую ARKit
с SpriteKit
. Моя функция AR не является основной функцией в моем приложении, пользователи могут при желании перейти к viewController с ARSKView
, где я настраиваю и устанавливаю SKScene
в ARsession
.
Я приостанавливаю сеанс, когда пользователь возвращается назад:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
sceneView.session.pause()
}
тогда viewController появляется из navigationController, куда он был помещен. Но я вижу, что функция func update(_ currentTime: TimeInterval)
в моем SKScene
подклассе продолжает вызываться ... что является подходящим способом остановить это? Я думал, что приостановка ARSession
также остановит сцену.
РЕДАКТИРОВАТЬ: когда я возвращаюсь из контроллера представления, который содержит ARSKView
, и он деинициализирован, я вижу, что SKScene
все еще находится в памяти, а новый создается каждый раз, когда я снова перехожу к AR, относящемуся к просмотр контроллера. Итак, если я перейду туда N раз, я вижу, что у меня в памяти N SKScene
. Как я мог надлежащим образом удалить сцену при переходе назад? Свойство scene
ARsession
доступно только для чтения.
sceneView.isPaused = true
, или приостановить сцену,sceneView.scene.isPaused = true
в зависимости от того, что вам нужно - person Knight0fDragon   schedule 11.10.2017ARKit
, а на дополнительную функцию, пользователь может вернуться назад из контроллера представления, содержащегоARSKView
. Я заметил, что приостановкиSKScene
недостаточно, он все еще живет после деиницирования контроллера представления, как мне уничтожить сцену? - person AppsDev   schedule 30.10.2017isPaused
для SCNView нет, толькоpause()
- person Crashalot   schedule 06.04.2018