ARKit - проверка конфигурации сеанса - PullRequest
1 голос
/ 01 июля 2019

Как проверить текущую конфигурацию отслеживания?

if sceneview.session.configuration == ARWorldTrakingConfiguration() { 
    print("foo") 
}

Не выполняет работу. Я понимаю, что сравниваю некоторые типы, поэтому утверждение никогда не соответствует действительности. Но есть ли способ?

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Вы должны использовать оператор if внутри DispatchQueue.main.asyncAfter(), чтобы дать дополнительное время (0,5 секунды) для инициализации и запуска вашей конфигурации.

Вот код:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    let configuration = ARWorldTrackingConfiguration()
    sceneView.session.run(configuration)

    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {

        if self.sceneView.session.configuration == ARWorldTrackingConfiguration() {
            print("Current configuration is a WorldTracking")
        } else {
            print("Current configuration isn't known")
        }
    }
}

PS Помните, это не работает на iOS Simulator и на игровой площадке .

0 голосов
/ 01 июля 2019

Все ARSession конфигурации являются подклассами ARConfiguration, поэтому вы можете проверить, соответствует ли ваша текущая конфигурация соответствующему типу, как показано ниже:

if sceneView.session.configuration is ARWorldTrackingConfiguration {
    print("configuration is of type ARWorldTrakingConfiguration")
}
...