我已经建立了一个 AR 项目。一切似乎都在工作,但是当我呈现并关闭它的视图控制器时,我无法保持 AR 会话继续进行。
所以,我有一个 AR 会话设置,如 Xcode 的示例项目所示。很简单。然后,当用户点击屏幕上的按钮时,我会这样做:
let myVC = MyVC()
present(myVC, animated: true) {
}
MyCV 出现在屏幕上,然后我选择一个选项,然后屏幕被关闭:
dismiss(animated: true) { }
关闭 MyVC 后,ARSession 在视图控制器中看起来冻结了。
所以,我想也许我必须告诉它再次运行,所以我在完成中添加了这一行:
dismiss(animated: true) {
self.sceneView.session.run(ARWorldTrackingSessionConfiguration())
}
没有什么。
然后我检查委托调用以确保我没有收到任何错误:
func session(_ session: ARSession, didFailWithError error: Error) {
// Present an error message to the user
}
func sessionWasInterrupted(_ session: ARSession) {
// Inform the user that the session has been interrupted, for example, by presenting an overlay
}
func sessionInterruptionEnded(_ session: ARSession) {
// Reset tracking and/or remove existing anchors if consistent tracking is required
}
在该过程中,这些都不会被调用。
为什么在 AR 会话上预制和关闭一个简单的 ViewController 时,它会显示为冻结状态?