I'm using ARKit
with SpriteKit
. My AR feature is not a core feature in my app, users may optionally navigate to a viewController with an ARSKView
where I configure and set an SKScene
in the ARsession
.
I pause the session when the user navigates back:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
sceneView.session.pause()
}
then the viewController is pop from the navigationController where it was pushed. But I'm seeing that the func update(_ currentTime: TimeInterval)
in my SKScene
subclass keeps being called... which is the appropriate way to also stop that? I thought that pausing the ARSession
would also stop the scene.
EDIT: when I navigate back from the view controller that holds the ARSKView
and it is deinitialized, I see that the SKScene
is still in memory and a new one is created every time I navigate again to the AR related view controller. So, if I navigate there N times, I see I have N SKScene
s in memory. How could I appropiately remove the scene when navigating back? The scene
property of the ARsession
is read only.
sceneView.isPaused = true
, or pause the scene,sceneView.scene.isPaused = true
depending on what you need – StairARKit
but an additional feature, user can navigate back from the view controller that holds theARSKView
. I've noticed that pausing theSKScene
is not enough, it still lives after the view controller is deinit, how should I "destroy" the scene? – PopelkaisPaused
for SCNView, onlypause()
– Gallonage