Automatiser le changement d'objets Unity XR dans une scène Unity
Les composants XR d'Unity (y compris AR Foundation) prennent en charge un nombre limité d'appareils. Pour utiliser AR Foundation sur les appareils pris en charge tout en utilisant les fonctionnalités AR sur de nombreux autres appareils, EasyAR fournit une fonctionnalité de changement automatique des objets Unity XR. Ce qui suit décrit les modifications apportées aux objets de scène et comment utiliser cette fonctionnalité.
Avant de commencer
- Lisez Prise en charge du framework Unity XR par EasyAR pour comprendre la prise en charge d'EasyAR pour le framework Unity XR et quand envisager d'utiliser AR Foundation.
- Assurez-vous que la scène a été configurée comme décrit dans Configuration et utilisation de scènes AR Foundation dans un projet EasyAR, avec l'ajout de ARSession et XROrigin d'AR Foundation.
Fonctionnalité
Comme AR Foundation d'Unity est implémenté en couche basse par ARCore et ARKit sur mobile, il ne peut être utilisé que sur un nombre limité d'appareils, en particulier sur de nombreux téléphones Android chinois où il ne fonctionne pas. Par conséquent, il est généralement recommandé d'activer AR Foundation et les scripts de fonctionnalités associés uniquement sur les appareils pris en charge. La fonctionnalité de changement automatique des objets Unity XR implémente cette opération, conçue principalement pour la RA mobile, et est désactivée par défaut sur les casques VR.
Lorsque la fonctionnalité complète est activée,
- Dans l'éditeur, easyar.ARSession désactive UnityEngine.XR.ARFoundation.ARSession
- Au runtime, easyar.ARSession désactive tous les composants Unity XR Core et les composants AR Foundation lors de Awake().
- Au runtime, si le FrameSource sélectionné hérite de ARFoundationFrameSource ou est un ExternalDeviceFrameSource implémentant l'origine XROrigin, alors les composants Unity XR Core et AR Foundation désactivés seront activés lors de easyar.ARSession.StartSession() (ceux non désactivés par EasyAR ne seront pas activés). Si un autre FrameSource est sélectionné, tous les composants Unity XR Core et AR Foundation seront désactivés lors de easyar.ARSession.StartSession().
- Au runtime, tous les composants Unity XR Core et AR Foundation seront désactivés lors de easyar.ARSession.StopSession(bool).
Par défaut, la fonctionnalité est activée sous les conditions suivantes,
- Activée sur Windows/Mac.
- Activée si le loader de RA mobile (ARKit/ARCore) est actif au démarrage du sélecteur.
- Désactivée s'il existe d'autres loaders que la RA mobile (ARKit/ARCore) au démarrage du sélecteur, mais qu'aucun loader n'est actif.
Note
Les composants de XR Interaction Toolkit ne sont pas contrôlés par cette fonctionnalité, mais leur compatibilité avec EasyAR n'est pas vérifiée. En théorie, les fonctionnalités utilisant uniquement le GameObject Unity.XR.CoreUtils.XROrigin et sa caméra devraient fonctionner normalement. En cas de comportement anormal, essayez de définir ARSession.ARCenterMode sur ARSession.ARCenterMode.SessionOrigin. Si le problème persiste, une implémentation personnalisée du contrôle des composants XR Interaction Toolkit sera nécessaire, désactivant les composants concernés lorsque le FrameSource n'hérite pas de ARFoundationFrameSource.
Méthode de configuration
Cette fonctionnalité peut être activée ou désactivée via les options dans Project Settings > EasyAR > Sense > Unity XR > Unity XR Auto Switch.

Les options de la figure configurent le comportement comme suit :
- Editor : options du mode édition
- Disable AR Session : désactive UnityEngine.XR.ARFoundation.ARSession en édition lorsqu'un easyar.ARSession est présent.
- Player : options du mode exécution
- Enable : active le contrôle au runtime. Remarque : lorsque cette option est désactivée, les composants désactivés en mode édition ne seront pas restaurés au runtime.
- Enable If Desktop : active sur Windows/Mac.
- Enable If Mobile AR On Startup : active si le loader de RA mobile (ARKit/ARCore) est actif au démarrage du sélecteur. Généralement, cette option nécessite que
Initialize XR on StartupdansProject Settings>XR Plug-in Managementsoit coché. - Disable If Non Mobile AR Post Startup : désactive s'il existe d'autres loaders que la RA mobile (ARKit/ARCore) au démarrage du sélecteur, mais qu'aucun loader n'est actif. Généralement utilisée lorsque
Initialize XR on StartupdansProject Settings>XR Plug-in Managementn'est pas coché. - Restore AR Session When Disabled : lorsque la fonctionnalité est désactivée, restaure (active) tous les UnityEngine.XR.ARFoundation.ARSession désactivés (qu'ils aient été désactivés par EasyAR ou non). Cette option est généralement utilisée pour restaurer les composants désactivés en édition.
Utiliser une méthode de contrôle personnalisée
Si un changement personnalisé de ces composants est nécessaire, ou si le comportement d'EasyAR interfère avec le fonctionnement normal de certains composants, assurez-vous de désactiver ces options et personnalisez le changement de composants selon les règles de base suivantes :
- Désactivez UnityEngine.XR.ARFoundation.ARSession dans l'éditeur (il s'exécute avant tous les autres scripts)
- Désactivez tous les composants Unity XR Core, AR Foundation et les composants ou fonctionnalités associés à contrôler avant qu'AR Foundation ne commence à fonctionner
- Si ARCoreARFoundationFrameSource ou ARKitARFoundationFrameSource est sélectionné pendant easyar.ARSession.Assemble(), activez tous les composants ou fonctionnalités précédemment désactivés avant que StartSession() ne se termine, généralement recommandé dans le gestionnaire d'événements easyar.ARSession.AssembleUpdate
- Si un autre FrameSource est sélectionné pendant easyar.ARSession.Assemble(), laissez inchangé