ARKit –会话的配置检查

时间:2019-07-01 10:35:23

标签: ios swift augmented-reality arkit

如何检查当前正在运行的跟踪配置?

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

不做这项工作。我了解我正在比较某些类型,因此该陈述永远都不是正确的。但是有什么办法吗?

2 个答案:

答案 0 :(得分:0)

所有ARSession配置都是ARConfiguration的子类,因此您可以检查您当前的配置是否具有适当的类型,如下所示:

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

答案 1 :(得分:0)

您必须在DispatchQueue.main.asyncAfter()内使用 if语句,以便花更多的时间(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")
        }
    }
}

P.S。请记住,它不适用于iOS模拟器和Playground