Стратегии 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:
- ActiveWhileTracked: при отслеживании GameObject активируется (GameObject.activeSelf устанавливается в
true); при потере tracking GameObject деактивируется (GameObject.activeSelf устанавливается вfalse). - ActiveAfterFirstTracked: до первого tracking GameObject деактивирован (GameObject.activeSelf устанавливается в
false); после успешного отслеживания GameObject остается активным (GameObject.activeSelf устанавливается вtrue).
По умолчанию TargetController использует стратегию ActiveWhileTracked. Это означает, что когда target отслеживается, target и его содержимое активируются, а при потере tracking target и его содержимое деактивируются.
По умолчанию XROriginChildController использует стратегию ActiveAfterFirstTracked. Это означает, что до успешной инициализации motion tracking origin и его содержимое деактивированы, а после успешной инициализации motion tracking origin и его содержимое остаются активными.
Выбор другой стратегии active control
Откройте панель Inspector и выберите Input в раскрывающемся меню Strategy.

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

В скриптах можно переопределить стратегию active control по умолчанию через свойство OverrideStrategy.
Например, следующий код показывает, как установить для target стратегию active control ActiveAfterFirstTracked:
target.ActiveController.OverrideStrategy = ActiveController.Strategy.ActiveAfterFirstTracked;
Изменения стратегии active вступают в силу немедленно, и GameObject.activeSelf обновляется в соответствии с текущим состоянием tracking.
Отключение active control
Если нужно полностью отключить active control, например чтобы управлять им по своему усмотрению, можно отключить active control, деактивировав компонент ActiveController.

В скриптах active control можно отключить, установив свойство ActiveController.enabled.
target.ActiveController.enabled = false;
Изменение свойства ActiveController.enabled вступает в силу немедленно, и GameObject.activeSelf больше не обновляется в соответствии с состоянием tracking. Если снова включить компонент ActiveController, GameObject.activeSelf будет обновляться в соответствии с текущим состоянием tracking.