Automatizar a troca de 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 suportados enquanto mantém funcionalidade AR em muitos outros dispositivos, o EasyAR fornece a funcionalidade de troca automática de objetos Unity XR. O conteúdo a seguir descreve as alterações nos objetos de cena e como usar esta funcionalidade.
Antes de começar
- Leia Suporte do EasyAR para o framework Unity XR para entender o suporte do EasyAR ao framework Unity XR e quando considerar usar AR Foundation.
- Certifique-se de que a cena foi configurada conforme descrito em Configuração e uso de cena AR Foundation em projetos EasyAR, adicionando ARSession e XROrigin do AR Foundation.
Funcionalidade
Como a implementação subjacente do AR Foundation do Unity em telefones é ARCore e ARKit, ele só pode ser usado em dispositivos limitados, especialmente em muitos telefones Android chineses onde não funciona. Portanto, geralmente recomenda-se habilitar o AR Foundation e scripts relacionados apenas em dispositivos suportados. A funcionalidade de troca automática de objetos Unity XR implementa esta operação, projetada principalmente para AR móvel, sendo desabilitada por padrão em headsets.
Quando totalmente habilitada:
- No editor, o easyar.ARSession desabilita o UnityEngine.XR.ARFoundation.ARSession
- Em tempo de execução, o easyar.ARSession desabilita todos os componentes Unity XR Core e do AR Foundation durante Awake().
- Em tempo de execução, se o FrameSource selecionado herdar de ARFoundationFrameSource ou implementar a origem XROrigin de ExternalDeviceFrameSource, os componentes Unity XR Core e do AR Foundation desabilitados serão habilitados durante easyar.ARSession.StartSession() (os não desabilitados pelo EasyAR não serão habilitados). Se outro FrameSource for selecionado, todos os componentes Unity XR Core e do AR Foundation serão desabilitados durante easyar.ARSession.StartSession().
- Em tempo de execução, todos os componentes Unity XR Core e do AR Foundation serão desabilitados durante easyar.ARSession.StopSession(bool).
Na configuração padrão, as condições de habilitação são:
- Habilitado no Windows/Mac.
- Habilitado se o loader de AR móvel (ARKit/ARCore) estiver ativo na inicialização do switcher.
- Desabilitado se existir outro loader além do AR móvel (ARKit/ARCore) na inicialização do switcher, mas nenhum loader estiver ativo.
Nota
Os componentes do XR Interaction Toolkit não são controlados por esta funcionalidade, e sua usabilidade no EasyAR não foi verificada. Teoricamente, funcionalidades que usam apenas o GameObject Unity.XR.CoreUtils.XROrigin e sua Camera devem funcionar. Se houver comportamento anômalo, tente definir ARSession.ARCenterMode como ARSession.ARCenterMode.SessionOrigin. Se ainda não funcionar, será necessário implementar controle personalizado para componentes do XR Interaction Toolkit, desabilitando-os quando o FrameSource não herdar de ARFoundationFrameSource.
Método de configuração
Esta funcionalidade pode ser habilitada ou desabilitada através das opções em Project Settings > EasyAR > Sense > Unity XR > Unity XR Auto Switch.

As opções configuram o comportamento da seguinte forma:
- Editor: opções de modo de edição
- Disable AR Session: desabilita UnityEngine.XR.ARFoundation.ARSession durante a edição quando easyar.ARSession estiver presente.
- Player: opções de modo de execução
- Enable: habilita controle em tempo de execução. Nota: componentes desabilitados no modo de edição não serão restaurados quando esta opção estiver desligada.
- Enable If Desktop: habilita no Windows/Mac.
- Enable If Mobile AR On Startup: habilita se o loader de AR móvel (ARKit/ARCore) estiver ativo na inicialização do switcher. Normalmente requer
Initialize XR on Startupmarcado emProject Settings>XR Plug-in Management. - Disable If Non Mobile AR Post Startup: desabilita se existir outro loader além do AR móvel (ARKit/ARCore) na inicialização do switcher, mas nenhum loader estiver ativo. Normalmente usado quando
Initialize XR on StartupemProject Settings>XR Plug-in Managementestá desmarcado. - Restore AR Session When Disabled: quando a funcionalidade estiver desabilitada, restaura (habilita) todos os UnityEngine.XR.ARFoundation.ARSession desabilitados (independentemente de terem sido desabilitados pelo EasyAR). Normalmente usado para restaurar componentes desabilitados durante a edição.
Usando métodos de controle personalizados
Se for necessário personalizar a troca destes componentes ou se o comportamento do EasyAR interferir no funcionamento de alguns componentes, desative estas opções e siga estas regras básicas para personalização:
- Desabilite UnityEngine.XR.ARFoundation.ARSession no editor (ele executa antes de todos os outros scripts)
- Desabilite todos os componentes Unity XR Core, do AR Foundation e componentes/funcionalidades relacionados antes do AR Foundation começar a funcionar
- Se easyar.ARSession.Assemble() selecionar ARCoreARFoundationFrameSource ou ARKitARFoundationFrameSource, habilite todos os componentes/funcionalidades previamente desabilitados antes de StartSession() completar (recomenda-se fazer isso no manipulador de eventos easyar.ARSession.AssembleUpdate)
- Se easyar.ARSession.Assemble() selecionar outro FrameSource, mantenha-os desabilitados