我有一个运行ARSession
的ARSCNView
。您可以肯定地暂停会话session.pause()
但仍然有效,使会话保持运行。我尝试通过将ARSCNView
从其超级视图中删除来解除分配。ARSCNView
确实解除了分配,但之后ARSession
仍在运行!!您也不能将nil
分配给ARSession
。我可以看到ARSessionDelegate
的
func session(_ session: ARSession, didUpdate frame: ARFrame)
还在打电话!
完成后,如何用 ARKit 将石板完全擦拭干净?
甚至可能吗?
正式地,现在,你不能。
但是,有一个解决方法:您将ARSCNView
变为一次性的。
离开AR时,首先暂停ARSession
。然后解除分配整个ARSCNView
层次结构,并将ARSCNView
设置为nil
以进行良好的衡量。重建整个ARSCNView
层次结构,并在需要返回 AR 时启动新会话。
var ARview: ARSCNView?
func punchTheClown() {
ARView?.session.pause()
ARView?.removeFromSuperview()
ARView = nil
}
应用的其他非 AR 区域通常位于与ARSCNView
相同的同级级别的单独视图层次结构中。我期待苹果提供实际的stopSession()
功能,这样我们就可以同时不必再打小丑了。
来自文档
暂停时,会话不会跟踪设备运动或捕获场景 影像,也不与其委托对象协调或更新任何 关联的 ARSCNView 或 ARSKView 对象
如果它没有引起问题,最好不要管。据我所知。这就像一个视频播放器。您可以随时暂停和恢复
来源于: .运行选项 ARKit 文档