Estratégias de active control para target e origin
Com o conteúdo a seguir, você entenderá as estratégias padrão de exibição e ocultação dos objetos sob target e origin, e como ajustá-las conforme necessário.
Antes de começar
- Leia Target para entender os conceitos básicos, estados e lifecycle de target.
- Leia XR Origin para entender os conceitos básicos, composição e lifecycle de XR Origin.
Active control e tipos de estratégia de controle
Durante a execução de session, target e origin passam por mudanças de estado como tracking e lost. Por meio de estratégias de active control, é possível gerenciar automaticamente o comportamento de exibir e ocultar objetos sob target e origin.
No Unity, o componente ActiveController é responsável por gerenciar automaticamente o estado GameObject.activeSelf dos objetos target e orign, para que o conteúdo seja exibido depois que target é rastreado ou motion tracking começa a rastrear, e seja ocultado quando target é perdido ou antes da inicialização bem-sucedida de motion tracking.
ActiveController fornece duas estratégias diferentes de active control:
- ActiveWhileTracked: quando rastreado, GameObject é ativado (GameObject.activeSelf definido como
true); quando tracking é perdido, GameObject é desativado (GameObject.activeSelf definido comofalse). - ActiveAfterFirstTracked: antes do primeiro tracking, GameObject é desativado (GameObject.activeSelf definido como
false); uma vez rastreado com sucesso, GameObject permanece ativado (GameObject.activeSelf definido comotrue).
Por padrão, TargetController usa a estratégia ActiveWhileTracked, o que significa que, quando target é rastreado, target e seu conteúdo são ativados; quando tracking é perdido, target e seu conteúdo são desativados.
Por padrão, XROriginChildController usa a estratégia ActiveAfterFirstTracked, o que significa que antes da inicialização bem-sucedida de motion tracking, origin e seu conteúdo são desativados; depois que motion tracking é inicializado com sucesso, origin e seu conteúdo permanecem ativados.
Selecionar uma estratégia de active control diferente
Abra o painel Inspector e selecione Input no menu suspenso Strategy.

Em seguida, selecione à direita a estratégia de active control necessária para substituir a estratégia padrão.

Em scripts, você pode substituir a estratégia padrão de active control pela propriedade OverrideStrategy.
Por exemplo, o código a seguir mostra como definir a estratégia de active control de target como ActiveAfterFirstTracked:
target.ActiveController.OverrideStrategy = ActiveController.Strategy.ActiveAfterFirstTracked;
As alterações na estratégia active entram em vigor imediatamente, e GameObject.activeSelf é atualizado de acordo com o estado atual de tracking.
Desativar active control
Se precisar desativar completamente active control, por exemplo para controlar conforme necessário, você pode desativar active control desativando o componente ActiveController.

Em scripts, você pode desativar active control configurando a propriedade ActiveController.enabled.
target.ActiveController.enabled = false;
As alterações na propriedade ActiveController.enabled entram em vigor imediatamente, e GameObject.activeSelf não será mais atualizado de acordo com o estado de tracking. Se o componente ActiveController for ativado novamente, GameObject.activeSelf será atualizado de acordo com o estado atual de tracking.