Basculer automatiquement les objets Unity XR dans les scènes Unity
Les composants XR de 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 fournissant des fonctions AR sur beaucoup d'autres appareils, EasyAR propose une fonction de bascule automatique des objets Unity XR. Le contenu suivant décrit les modifications apportées par cette fonction aux objets de scène et son utilisation.
Avant de commencer
- Lisez Prise en charge du framework Unity XR par EasyAR pour comprendre la prise en charge du framework Unity XR par EasyAR et les situations où l'utilisation d'AR Foundation peut être envisagée.
- Assurez-vous que la scène a ajouté ARSession et XROrigin d'AR Foundation comme décrit dans Configuration et utilisation d'une scène AR Foundation dans les projets EasyAR.
Présentation de la fonction
Comme l'implémentation sous-jacente d'AR Foundation de Unity sur téléphone repose sur ARCore et ARKit, elle ne peut être utilisée que sur un nombre limité d'appareils, notamment pas sur de nombreux téléphones Android chinois. Il est donc généralement recommandé de n'activer AR Foundation et les scripts fonctionnels associés que sur les appareils pris en charge. La fonction de bascule automatique des objets Unity XR réalise cette opération. Elle est principalement conçue pour le mobile AR et est désactivée par défaut sur les casques.
Lorsque la fonction 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 qui implémente l'origin XROrigin, les composants Unity XR Core et AR Foundation désactivés seront activés lors de easyar.ARSession.StartSession() (ceux qui n'ont pas été 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).
Dans la configuration par défaut, les conditions d'activation de la fonction sont les suivantes :
- Activée sur Windows/Mac.
- Au démarrage du switcher, si le loader mobile AR (ARKit/ARCore) est active, elle est activée.
- Au démarrage du switcher, s'il existe d'autres loader que mobile AR (ARKit/ARCore), mais qu'aucun loader n'est active, elle est désactivée.
Note
Les composants de XR Interaction Toolkit ne sont pas contrôlés par cette fonction, et leur disponibilité dans EasyAR n'a pas été vérifiée. En théorie, les fonctions qui utilisent uniquement le GameObject Unity.XR.CoreUtils.XROrigin et sa Camera devraient fonctionner normalement. En cas de comportement anormal, vous pouvez essayer de définir ARSession.ARCenterMode sur ARSession.ARCenterMode.SessionOrigin. Si la fonction reste anormale, il faut implémenter un contrôle personnalisé des composants XR Interaction Toolkit et désactiver les composants associés lorsque FrameSource n'hérite pas de ARFoundationFrameSource.
Méthode de configuration
Cette fonction peut être activée ou désactivée via les options de Unity XR > Unity XR Auto Switch dans Project Settings > EasyAR > Sense.

Le comportement des options de l'image est le suivant :
- Editor : options du mode édition
- Disable AR Session : lorsqu'un easyar.ARSession existe, désactive UnityEngine.XR.ARFoundation.ARSession pendant l'édition.
- Player : options du mode runtime
- Enable : active le contrôle 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 : au démarrage du switcher, active la fonction si le loader mobile AR (ARKit/ARCore) est active. En général, cette option nécessite que
Initialize XR on StartupdansProject Settings>XR Plug-in Managementsoit coché. - Disable If Non Mobile AR Post Startup : au démarrage du switcher, désactive la fonction s'il existe d'autres loader que mobile AR (ARKit/ARCore), mais qu'aucun loader n'est active. Cette option est 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 fonction 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 sert généralement à restaurer les composants désactivés pendant l'édition.
Utiliser une méthode de contrôle personnalisée
Si vous devez personnaliser la bascule de ces composants, ou si le comportement d'EasyAR interfère avec le fonctionnement normal de certains composants, assurez-vous de désactiver ces options, puis personnalisez la bascule des composants selon les règles de base suivantes :
- Désactiver UnityEngine.XR.ARFoundation.ARSession dans l'éditeur (il s'exécute avant tous les autres scripts)
- Avant le démarrage d'AR Foundation, désactiver tous les composants Unity XR Core et AR Foundation ainsi que les composants ou fonctions associés à contrôler
- Si ARCoreARFoundationFrameSource ou ARKitARFoundationFrameSource est sélectionné pendant easyar.ARSession.Assemble(), activer tous les composants ou fonctions précédemment désactivés avant la fin de StartSession(); il est généralement recommandé de le faire dans la réponse à l'événement easyar.ARSession.AssembleUpdate
- Si un autre FrameSource est sélectionné pendant easyar.ARSession.Assemble(), laisser l'état inchangé