问题描述:当在AR应用程序中添加了ARCoachingOverlayView并使用session DidUpdateFrame回调来检测ARSession中的状态时,有时会发现ARCoachingOverlayView无法立即启动,即使ARSession已准备好运行。
在ARCoachingOverlayView上调用 start方法,以使其随时准备好启动。此外,为确保ARSession可用,可以在session DidUpdateFrame回调中添加以下代码:
func session(_ session: ARSession, didUpdate frame: ARFrame) {
if !coachingOverlayView.isActive {
coachingOverlayView.start()
}
}
此代码段将检查coachingOverlayView是否已准备好,并在必要时启动它。
注意:在某些情况下,可能需要等待ARSession准备就绪再启动coachingOverlayView,例如在会话启动期间添加时。在这种情况下,可以在 session WasInterrupted和session InterruptionEnded回调中添加以下代码:
func sessionWasInterrupted(_ session: ARSession) {
coachingOverlayView.activatesAutomatically = false
}
func sessionInterruptionEnded(_ session: ARSession) {
if coachingOverlayView.shouldActivateAutomatically {
coachingOverlayView.activatesAutomatically = true
coachingOverlayView.start()
}
}
这些回调将在ARSession中断期间暂停 coachingOverlayView,并在会话恢复时重新启动它。
下一篇:AR应用中的锚点检测问题