Swift ARKit Как полностью убить ARSession?

У меня есть ARSCNView работает ARSession, Вы можете приостановить сеанс с session.pause() конечно, но это все еще действует, оставляя сеанс запущенным. Я пытался освободить ARSCNView удалив его из суперпредставления. ARSCNView действительно освобождает, но ARSession все еще работает после!! Вы не можете назначить nil в ARSession или. Я могу видеть ARSessionDelegate"s

func session(_ session: ARSession, didUpdate frame: ARFrame) 

все еще вызывается!

Как полностью стереть планшет с помощью ARKit?

Это вообще возможно?

1 ответ

Официально, сейчас вы не можете.

Однако есть обходной путь: вы делаете ARSCNView одноразовые.

При выходе из АР сначала сделайте паузу ARSession, Затем освободить весь ARSCNView иерархия и множество ARSCNView в nil для хорошей меры. Перестройте весь ARSCNView иерархии и начать новый сеанс всякий раз, когда вам нужно вернуться к AR.

var ARview: ARSCNView?

func punchTheClown() {

    ARView?.session.pause()
    ARView?.removeFromSuperview()
    ARView = nil

}

Другие не-AR области вашего приложения обычно находятся в отдельной иерархии представления на том же уровне, что и ваш ARSCNView, Я с нетерпением жду, когда Apple представит stopSession() функция, так что мы все можем перестать punchTheClown тем временем.

Из документов

Во время паузы сеанс не отслеживает движение устройства и не записывает изображения сцены, а также не координирует свои действия с объектом-делегатом и не обновляет любой связанный объект ARSCNView или ARSKView.

Если это не вызывает проблем, лучше оставить в покое. Насколько я знаю. Это работает как видео плеер. Вы можете приостановить и возобновить его в любое время

Источник здесь: .RunOptions ARKit Docs

Другие вопросы по тегам