Хорошо, это не лучший способ исправить это, но, вероятно, это сработает.
В ViewController, где у вас есть ARScene View, вы должны инициализировать флаг bool, который проверит, нужно ли запускать конфигурацию.итак ..
var shouldDoThingsInViewWillAppear: Bool = true
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if shouldDoThingsInViewWillAppear {
shouldDoThingsInViewWillAppear = false
guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "TotensImages", bundle: nil) else { return }
let configuration = ARImageTrackingConfiguration()
configuration.trackingImages = referenceImages
let options: ARSession.RunOptions = [.removeExistingAnchors]
sceneView!.session.run(configuration, options: options)
}
}
Если эта работа означает, что вы не должны запускать дважды сеанс или что вы не должны добавлять дважды изображения отслеживания.
Если не пытаетесь выполнитьТо же самое, что и viewDidAppear вместо ViewWillAppear.
Если вы попытаетесь изменить метод запуска на
sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])