Swift ARKit 你如何完全杀死一个ARSession?
Swift ARKit How do you fully kill an ARSession?
我有一个 ARSCNView
运行 一个 ARSession
。您可以使用 session.pause()
暂停会话,但仍然有效,离开会话 运行。我已经尝试通过将 ARSCNView
从其超级视图中删除来解除分配它。 ARSCNView
确实解除了分配,但 ARSession
之后仍然是 运行!!您也不能将 nil
分配给 ARSession
。我可以看到 ARSessionDelegate
的
func session(_ session: ARSession, didUpdate frame: ARFrame)
仍在通话中!
你如何在使用完 ARKit 后彻底擦干净石板?
有可能吗?
来自文档
While paused, the session doesn't track device motion or capture scene
imagery, nor does it coordinate with its delegate object or update any
associated ARSCNView or ARSKView object
如果没有引起问题,最好不要管。据我所知。这就像一个视频播放器。您可以随时暂停并恢复
正式的,现在,你不能。
但是,有一个变通方法:将 ARSCNView
设为一次性。
离开 AR 时,先暂停 ARSession
。然后取消分配整个 ARSCNView
层次结构并将 ARSCNView
设置为 nil
以取得良好的效果。重建整个 ARSCNView
层次结构并在需要返回 AR 时启动新会话。
var ARview: ARSCNView?
func punchTheClown() {
ARView?.session.pause()
ARView?.removeFromSuperview()
ARView = nil
}
您应用的其他非 AR 区域通常位于与您的 ARSCNView
相同兄弟级的单独视图层次结构中。我期待 Apple 提供实际的 stopSession()
功能,这样我们就可以不用再打小丑了。
我有一个 ARSCNView
运行 一个 ARSession
。您可以使用 session.pause()
暂停会话,但仍然有效,离开会话 运行。我已经尝试通过将 ARSCNView
从其超级视图中删除来解除分配它。 ARSCNView
确实解除了分配,但 ARSession
之后仍然是 运行!!您也不能将 nil
分配给 ARSession
。我可以看到 ARSessionDelegate
的
func session(_ session: ARSession, didUpdate frame: ARFrame)
仍在通话中!
你如何在使用完 ARKit 后彻底擦干净石板?
有可能吗?
来自文档
While paused, the session doesn't track device motion or capture scene imagery, nor does it coordinate with its delegate object or update any associated ARSCNView or ARSKView object
如果没有引起问题,最好不要管。据我所知。这就像一个视频播放器。您可以随时暂停并恢复
正式的,现在,你不能。
但是,有一个变通方法:将 ARSCNView
设为一次性。
离开 AR 时,先暂停 ARSession
。然后取消分配整个 ARSCNView
层次结构并将 ARSCNView
设置为 nil
以取得良好的效果。重建整个 ARSCNView
层次结构并在需要返回 AR 时启动新会话。
var ARview: ARSCNView?
func punchTheClown() {
ARView?.session.pause()
ARView?.removeFromSuperview()
ARView = nil
}
您应用的其他非 AR 区域通常位于与您的 ARSCNView
相同兄弟级的单独视图层次结构中。我期待 Apple 提供实际的 stopSession()
功能,这样我们就可以不用再打小丑了。