Table of Contents

Стратегии active control для target и origin

В следующем материале описаны стратегии отображения и скрытия объектов под target и origin по умолчанию, а также способы их настройки при необходимости.

Перед началом

  • Прочитайте Target, чтобы узнать базовые понятия, состояния и жизненный цикл target.
  • Прочитайте XR Origin, чтобы узнать базовые понятия, состав и жизненный цикл XR Origin.

Active control и типы стратегий управления

Во время работы session target и origin проходят изменения состояния, такие как tracking и lost. С помощью стратегий active control можно автоматически управлять поведением отображения и скрытия объектов под target и origin.

В Unity компонент ActiveController отвечает за автоматическое управление состоянием GameObject.activeSelf объектов target и orign, чтобы показывать содержимое после того, как target отслеживается или motion tracking начинает отслеживание, и скрывать его при потере target или до успешной инициализации motion tracking.

ActiveController предоставляет две разные стратегии active control:

По умолчанию TargetController использует стратегию ActiveWhileTracked. Это означает, что когда target отслеживается, target и его содержимое активируются, а при потере tracking target и его содержимое деактивируются.

По умолчанию XROriginChildController использует стратегию ActiveAfterFirstTracked. Это означает, что до успешной инициализации motion tracking origin и его содержимое деактивированы, а после успешной инициализации motion tracking origin и его содержимое остаются активными.

Выбор другой стратегии active control

Откройте панель Inspector и выберите Input в раскрывающемся меню Strategy.

alt text

Затем справа выберите нужную стратегию active control, чтобы переопределить стратегию по умолчанию.

alt text

В скриптах можно переопределить стратегию active control по умолчанию через свойство OverrideStrategy.

Например, следующий код показывает, как установить для target стратегию active control ActiveAfterFirstTracked:

target.ActiveController.OverrideStrategy = ActiveController.Strategy.ActiveAfterFirstTracked;

Изменения стратегии active вступают в силу немедленно, и GameObject.activeSelf обновляется в соответствии с текущим состоянием tracking.

Отключение active control

Если нужно полностью отключить active control, например чтобы управлять им по своему усмотрению, можно отключить active control, деактивировав компонент ActiveController.

alt text

В скриптах active control можно отключить, установив свойство ActiveController.enabled.

target.ActiveController.enabled = false;

Изменение свойства ActiveController.enabled вступает в силу немедленно, и GameObject.activeSelf больше не обновляется в соответствии с состоянием tracking. Если снова включить компонент ActiveController, GameObject.activeSelf будет обновляться в соответствии с текущим состоянием tracking.