我有一个ARSCNView
正在运行ARSession
。您可以肯定session.pause()
暂停会话,但是仍然有效,可以使会话继续运行。我尝试通过从其超级视图中删除ARSCNView
来解除分配。 ARSCNView
确实已解除分配,但之后ARSession
仍在运行!!您也无法将nil
分配给ARSession
。我可以看到ARSessionDelegate
的
func session(_ session: ARSession, didUpdate frame: ARFrame)
仍在被呼叫!
完成后如何用ARKit彻底擦拭干净?
有可能吗?
答案 0 :(得分:1)
目前,您还不能这样做。
但是,有一种解决方法:将ARSCNView
设为一次性。
离开AR后,请先暂停ARSession
。然后取消分配整个ARSCNView
层次结构,并将ARSCNView
设置为nil
,以取得良好效果。重建整个ARSCNView
层次结构,并在需要返回到AR时开始新的会话。
var ARview: ARSCNView?
func punchTheClown() {
ARView?.session.pause()
ARView?.removeFromSuperview()
ARView = nil
}
应用程序的其他非AR区域通常位于与ARSCNView
同级的单独视图层次结构中。我期待Apple提供实际的stopSession()
功能,因此我们所有人都可以在此期间不再需要对TheClown打孔。
答案 1 :(得分:0)
来自文档
在暂停期间,会话不会跟踪设备运动或捕获场景 图像,也不会与其委托对象协调或更新任何 关联的ARSCNView或ARSKView对象
如果这不会引起问题,最好不要理会。我所知道的。这就像视频播放器一样。您可以随时 暂停 并恢复