Table of Contents

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:

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.

alt text

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

alt text

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.

alt text

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.