Alternar automaticamente objetos Unity XR em cenas Unity
Os componentes XR do Unity (incluindo AR Foundation) têm suporte limitado a dispositivos. Para usar AR Foundation em dispositivos compatíveis e, ao mesmo tempo, disponibilizar funções AR em muitos outros dispositivos, EasyAR oferece uma função para alternar automaticamente objetos Unity XR. O conteúdo a seguir descreve as alterações que essa função faz nos objetos da cena e como usá-la.
Antes de começar
- Leia Suporte do EasyAR ao framework Unity XR para entender o suporte do EasyAR ao framework Unity XR e em quais situações considerar o uso de AR Foundation.
- Certifique-se de que a cena adicionou ARSession e XROrigin da AR Foundation conforme descrito em Configuração e uso de cenas AR Foundation em projetos EasyAR.
Introdução à função
Como a implementação subjacente da AR Foundation do Unity em celulares é ARCore e ARKit, ela só pode ser usada em um conjunto limitado de dispositivos, especialmente indisponível em muitos celulares Android domésticos chineses. Portanto, geralmente é recomendado habilitar AR Foundation e scripts funcionais relacionados apenas em dispositivos compatíveis. A função de alternância automática de objetos Unity XR implementa essa operação, é projetada principalmente para mobile AR e fica desabilitada em headsets na configuração padrão.
Quando a função completa está habilitada,
- No editor, easyar.ARSession desabilita UnityEngine.XR.ARFoundation.ARSession
- Em runtime, easyar.ARSession desabilita todos os componentes Unity XR Core e componentes AR Foundation durante Awake().
- Em runtime, se o FrameSource selecionado herdar de ARFoundationFrameSource ou for um ExternalDeviceFrameSource que implementa a origem XROrigin, os componentes Unity XR Core e AR Foundation desabilitados serão habilitados durante easyar.ARSession.StartSession() (os que não foram desabilitados pelo EasyAR não serão habilitados). Se outro FrameSource for selecionado, todos os componentes Unity XR Core e AR Foundation serão desabilitados durante easyar.ARSession.StartSession().
- Em runtime, todos os componentes Unity XR Core e AR Foundation serão desabilitados durante easyar.ARSession.StopSession(bool).
Na configuração padrão, as condições de habilitação da função são:
- Habilitada no Windows/Mac.
- Na inicialização do switcher, se o loader de mobile AR (ARKit/ARCore) estiver active, a função é habilitada.
- Na inicialização do switcher, se houver outros loaders além de mobile AR (ARKit/ARCore), mas nenhum loader estiver active, a função é desabilitada.
Nota
Os componentes do XR Interaction Toolkit não são controlados por esta função, e sua disponibilidade no EasyAR não foi verificada. Em teoria, funções que usam apenas o GameObject Unity.XR.CoreUtils.XROrigin e sua Camera devem funcionar normalmente. Se o comportamento for anormal, você pode tentar definir ARSession.ARCenterMode como ARSession.ARCenterMode.SessionOrigin. Se a função ainda não estiver normal, será necessário implementar um controle personalizado dos componentes XR Interaction Toolkit e desabilitar os componentes relacionados quando FrameSource não herdar de ARFoundationFrameSource.
Método de configuração
Esta função pode ser habilitada ou desabilitada pelas opções em Unity XR > Unity XR Auto Switch dentro de Project Settings > EasyAR > Sense.

O comportamento das opções na figura é o seguinte:
- Editor: opções do modo de edição
- Disable AR Session: quando easyar.ARSession existe, desabilita UnityEngine.XR.ARFoundation.ARSession durante a edição.
- Player: opções do modo runtime
- Enable: habilita o controle em runtime. Observação: quando esta opção está desligada, os componentes desabilitados no modo de edição não serão restaurados em runtime.
- Enable If Desktop: habilita no Windows/Mac.
- Enable If Mobile AR On Startup: na inicialização do switcher, se o loader de mobile AR (ARKit/ARCore) estiver active, habilita. Normalmente esta opção requer que
Initialize XR on StartupemProject Settings>XR Plug-in Managementesteja marcado. - Disable If Non Mobile AR Post Startup: na inicialização do switcher, se houver outros loaders além de mobile AR (ARKit/ARCore), mas nenhum loader estiver active, desabilita. Normalmente esta opção é usada quando
Initialize XR on StartupemProject Settings>XR Plug-in Managementnão está marcado. - Restore AR Session When Disabled: quando a função está desabilitada, restaura (habilita) todos os UnityEngine.XR.ARFoundation.ARSession desabilitados, independentemente de terem sido desabilitados pelo EasyAR. Esta opção geralmente é usada para restaurar componentes desabilitados durante a edição.
Usar um método de controle personalizado
Se for necessário personalizar a alternância desses componentes, ou se o comportamento do EasyAR interferir no funcionamento normal de certos componentes, certifique-se de desativar essas opções e personalize a alternância de componentes conforme as regras básicas abaixo:
- Desabilite UnityEngine.XR.ARFoundation.ARSession no editor (ele é executado antes de todos os outros scripts)
- Antes que AR Foundation comece a funcionar, desabilite todos os componentes Unity XR Core e AR Foundation, além dos componentes ou funções relacionados que precisam ser controlados
- Se ARCoreARFoundationFrameSource ou ARKitARFoundationFrameSource for selecionado durante easyar.ARSession.Assemble(), habilite todos os componentes ou funções desabilitados anteriormente antes que StartSession() seja concluído; normalmente recomenda-se fazer isso na resposta ao evento easyar.ARSession.AssembleUpdate
- Se outro FrameSource for selecionado durante easyar.ARSession.Assemble(), mantenha inalterado