Cambio automático de objetos Unity XR en escenas de Unity
Los componentes XR de Unity (incluyendo AR Foundation) tienen soporte limitado para dispositivos. Para usar AR Foundation en dispositivos compatibles mientras se mantiene la funcionalidad AR en muchos otros dispositivos, EasyAR proporciona la función de cambio automático de objetos Unity XR. A continuación se describe cómo esta función modifica los objetos de escena y cómo usarla.
Antes de comenzar
- Lee Soporte de EasyAR para el framework Unity XR para entender cómo EasyAR soporta el framework Unity XR y cuándo considerar usar AR Foundation.
- Asegúrate de que la escena ha añadido ARSession y XROrigin de AR Foundation como se describe en Configuración y uso de escenas AR Foundation en proyectos EasyAR.
Funcionalidad
Dado que AR Foundation de Unity en móviles se implementa sobre ARCore y ARKit, solo funciona en dispositivos limitados, especialmente en muchos teléfonos Android chinos donde no es usable. Por lo tanto, generalmente se recomienda habilitar AR Foundation y sus scripts relacionados solo en dispositivos compatibles. La función de cambio automático de objetos Unity XR implementa esta operación, diseñada principalmente para AR móvil, y se desactiva por defecto en dispositivos de realidad virtual.
Cuando la función está completamente habilitada:
- En el editor, easyar.ARSession desactiva UnityEngine.XR.ARFoundation.ARSession
- En tiempo de ejecución, easyar.ARSession desactiva todos los componentes de Unity XR Core y AR Foundation durante Awake().
- En tiempo de ejecución, si el FrameSource seleccionado hereda de ARFoundationFrameSource o es un ExternalDeviceFrameSource que implementa el origen XROrigin, los componentes desactivados de Unity XR Core y AR Foundation se habilitarán durante easyar.ARSession.StartSession() (los no desactivados por EasyAR no se habilitarán). Si se selecciona otro FrameSource, todos los componentes de Unity XR Core y AR Foundation se desactivarán durante easyar.ARSession.StartSession().
- En tiempo de ejecución, todos los componentes de Unity XR Core y AR Foundation se desactivan durante easyar.ARSession.StopSession(bool).
Por defecto, la función se habilita bajo estas condiciones:
- Habilitado en Windows/Mac.
- Habilitado si el loader de AR móvil (ARKit/ARCore) está activo al iniciar el conmutador.
- Deshabilitado si existen otros loaders además de AR móvil (ARKit/ARCore) al iniciar el conmutador, pero ninguno está activo.
Nota
Los componentes de XR Interaction Toolkit no están controlados por esta función, y su compatibilidad con EasyAR no está verificada. Teóricamente, las funcionalidades que solo usan el GameObject Unity.XR.CoreUtils.XROrigin y su Camera deberían funcionar. Si hay comportamientos anómalos, prueba configurando ARSession.ARCenterMode como ARSession.ARCenterMode.SessionOrigin. Si persisten los problemas, implementa un control personalizado para los componentes de XR Interaction Toolkit, desactivándolos cuando FrameSource no herede de ARFoundationFrameSource.
Método de configuración
Esta función puede habilitarse o deshabilitarse mediante las opciones en Project Settings > EasyAR > Sense > Unity XR > Unity XR Auto Switch.

Las opciones configuran el comportamiento así:
- Editor: Opciones para modo edición
- Disable AR Session: Si existe easyar.ARSession, desactiva UnityEngine.XR.ARFoundation.ARSession durante la edición.
- Player: Opciones para modo ejecución
- Enable: Habilita el control en tiempo de ejecución. Nota: Al desactivar esta opción, los componentes deshabilitados en modo edición no se restaurarán.
- Enable If Desktop: Habilita en Windows/Mac.
- Enable If Mobile AR On Startup: Habilita si el loader de AR móvil (ARKit/ARCore) está activo al iniciar el conmutador. Normalmente requiere que
Initialize XR on StartupenProject Settings>XR Plug-in Managementesté seleccionado. - Disable If Non Mobile AR Post Startup: Deshabilita si existen otros loaders además de AR móvil (ARKit/ARCore) al iniciar el conmutador, pero ninguno está activo. Usado típicamente cuando
Initialize XR on StartupenProject Settings>XR Plug-in Managementno está seleccionado. - Restore AR Session When Disabled: Cuando la función está deshabilitada, restaura (habilita) todos los UnityEngine.XR.ARFoundation.ARSession desactivados (incluso si no los desactivó EasyAR). Útil para restaurar componentes deshabilitados durante la edición.
Usar métodos de control personalizados
Si necesitas personalizar la activación/desactivación de componentes o EasyAR interfiere con algún componente:
- Desactiva UnityEngine.XR.ARFoundation.ARSession en el editor (se ejecuta antes que otros scripts)
- Antes de que AR Foundation comience, desactiva todos los componentes de Unity XR Core, AR Foundation y cualquier componente/función relacionado que necesites controlar
- Si durante easyar.ARSession.Assemble() se selecciona ARCoreARFoundationFrameSource o ARKitARFoundationFrameSource, habilita los componentes/funciones previamente desactivados antes de que finalice StartSession(). Se recomienda hacerlo en el manejador del evento easyar.ARSession.AssembleUpdate
- Si se selecciona otro FrameSource durante easyar.ARSession.Assemble(), mantén los componentes desactivados