迅捷的ARKit 你如何完全杀死一个ARSession?



我有一个运行ARSessionARSCNView。您可以肯定地暂停会话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 文档

相关内容

  • 没有找到相关文章

最新更新