Вы можете изменить конфигурацию текущего сеанса, снова вызвав run(_:options:)
с новой конфигурацией.
Если вы оставите параметр options
пустым (или пропустите его) и передадите конфигурацию того же типа, что и текущий сеанс, все в вашем сеансе (существующие привязки и т. Д.) Останется прежним, за исключением все изменения, которые вы внесли в конфигурацию.
// before
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .horizontal
session.run(configuration)
// after
let newConfiguration = ARWorldTrackingConfiguration()
newConfiguration.planeDetection = .vertical
session.run(newConfiguration)
В таком случае, если вы измените настройки обнаружения плоскости, но не удалите существующие привязки при повторном запуске сеанса, существующие привязки горизонтальной плоскости останутся в сеансе, но больше не будут обновляться.
Похоже, проблема, с которой вы сталкиваетесь, заключается в том, что вы изменяете свойства конфигурации, которую вы уже передали сеансу, и не передаете ее снова сеансу - это акт вызова run
с вашим Конфигурация, в которой изменения вступают в силу.
Думайте об этом так: ARConfiguration
- это форма заказа, которую вы можете использовать в магазине сэндвичей. Вы устанавливаете флажки, в которых говорится, что хотите лук и майонез, а затем передаете форму кассиру. Форма написана на копировальной бумаге, поэтому они отрывают копию со спины и отдают ее на кухню, а затем возвращают оригинал обратно, чтобы вы могли показать его на стойке пикапа, чтобы потребовать вашу еду. Если вы набросаете «майонез» и вместо этого проверите гуакамоле, то это не изменит того, что делает кухня, если вы снова не поговорите с кассиром.