ARKit:暂停会话不会停止要调用的场景

App*_*Dev 8 ios sprite-kit skscene arkit

我使用的是ARKitSpriteKit。我的AR功能不是我应用程序中的核心功能,用户可以选择导航到一个ViewController,ARSKView其中包含我在中配置和设置SKScene的位置ARsession

当用户向后导航时,我暂停了会话:

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)   
    sceneView.session.pause()
}
Run Code Online (Sandbox Code Playgroud)

然后viewController从被推送到的navigationController中弹出。但是我看到update(_ currentTime: TimeInterval)我的SKScene子类中的func 一直被调用...这也是停止该功能的合适方法吗?我以为暂停ARSession也会停止场景。

编辑:当我从持有的视图控制器向后导航ARSKView并被取消初始化时,我看到SKScene仍然在内存中,并且每次我再次导航至与AR相关的视图控制器时都会创建一个新的。因此,如果我在那里导航N次,我会发现我SKScene的内存中有N s个。向后导航时如何正确删除场景?的scene属性ARsession为只读。

Mar*_*lar 2

我找不到任何关于此的官方文档,显然还没有适当的方法来停止会话。我发现与您的情况类似的是这个解决方法

它建议您创建ARSKView为一次性的,并在离开控制器之前暂停会话,从超级视图中删除视图并将其分配为 nil。