Passare automaticamente tra oggetti Unity XR nelle scene Unity
I componenti XR di Unity (incluso AR Foundation) supportano un numero limitato di dispositivi. Per usare AR Foundation sui dispositivi supportati e al tempo stesso fornire funzioni AR su molti altri dispositivi, EasyAR offre una funzione per passare automaticamente tra oggetti Unity XR. Il contenuto seguente descrive le modifiche apportate agli oggetti della scena e come usare questa funzione.
Prima di iniziare
- Leggere Supporto EasyAR per il framework Unity XR per comprendere il supporto di EasyAR al framework Unity XR e in quali casi considerare l'uso di AR Foundation.
- Assicurarsi che la scena abbia aggiunto ARSession e XROrigin di AR Foundation come descritto in Configurazione e uso della scena AR Foundation nei progetti EasyAR.
Introduzione alla funzione
Poiché l'implementazione sottostante di AR Foundation di Unity su telefoni è ARCore e ARKit, può essere usata solo su dispositivi limitati, soprattutto non è disponibile su molti telefoni Android domestici cinesi. Per questo si consiglia in genere di abilitare AR Foundation e gli script funzionali correlati solo sui dispositivi supportati. La funzione di passaggio automatico tra oggetti Unity XR implementa questa operazione, è progettata principalmente per mobile AR e sui visori è disabilitata nella configurazione predefinita.
Quando la funzione completa è abilitata,
- Nell'editor, easyar.ARSession disabilita UnityEngine.XR.ARFoundation.ARSession
- A runtime, easyar.ARSession disabilita tutti i componenti Unity XR Core e i componenti AR Foundation durante Awake().
- A runtime, se il FrameSource selezionato eredita da ARFoundationFrameSource oppure è un ExternalDeviceFrameSource che implementa l'origine XROrigin, i componenti Unity XR Core e AR Foundation disabilitati verranno abilitati durante easyar.ARSession.StartSession() (i componenti non disabilitati da EasyAR non verranno abilitati). Se viene selezionato un altro FrameSource, tutti i componenti Unity XR Core e AR Foundation verranno disabilitati durante easyar.ARSession.StartSession().
- A runtime, tutti i componenti Unity XR Core e AR Foundation verranno disabilitati durante easyar.ARSession.StopSession(bool).
Nella configurazione predefinita, le condizioni di abilitazione della funzione sono:
- Abilitata su Windows/Mac.
- All'avvio dello switcher, se il loader mobile AR (ARKit/ARCore) è attivo, viene abilitata.
- All'avvio dello switcher, se esistono altri loader oltre a mobile AR (ARKit/ARCore), ma nessun loader è attivo, viene disabilitata.
Nota
I componenti di XR Interaction Toolkit non sono controllati da questa funzione, e la loro disponibilità in EasyAR non è stata verificata. In teoria, le funzioni che usano solo il GameObject Unity.XR.CoreUtils.XROrigin e la sua Camera dovrebbero funzionare normalmente. Se il comportamento è anomalo, è possibile provare a impostare ARSession.ARCenterMode su ARSession.ARCenterMode.SessionOrigin. Se la funzione continua a non essere normale, è necessario implementare un controllo personalizzato dei componenti XR Interaction Toolkit e disabilitare i componenti correlati quando FrameSource non eredita da ARFoundationFrameSource.
Metodo di configurazione
Questa funzione può essere abilitata o disabilitata tramite le opzioni in Unity XR > Unity XR Auto Switch dentro Project Settings > EasyAR > Sense.

Il comportamento delle opzioni nella figura è il seguente:
- Editor: opzioni della modalità di modifica
- Disable AR Session: quando esiste easyar.ARSession, disabilita UnityEngine.XR.ARFoundation.ARSession durante la modifica.
- Player: opzioni della modalità runtime
- Enable: abilita il controllo runtime. Nota: quando questa opzione è disattivata, i componenti disabilitati in modalità di modifica non verranno ripristinati a runtime.
- Enable If Desktop: abilita su Windows/Mac.
- Enable If Mobile AR On Startup: all'avvio dello switcher, se il loader mobile AR (ARKit/ARCore) è attivo, viene abilitata. Di solito questa opzione richiede che
Initialize XR on StartupinProject Settings>XR Plug-in Managementsia selezionato. - Disable If Non Mobile AR Post Startup: all'avvio dello switcher, se esistono altri loader oltre a mobile AR (ARKit/ARCore), ma nessun loader è attivo, viene disabilitata. Di solito questa opzione viene usata quando
Initialize XR on StartupinProject Settings>XR Plug-in Managementnon è selezionato. - Restore AR Session When Disabled: quando la funzione è disabilitata, ripristina (abilita) tutti i UnityEngine.XR.ARFoundation.ARSession disabilitati, indipendentemente dal fatto che siano stati disabilitati da EasyAR. Questa opzione viene solitamente usata per ripristinare i componenti disabilitati durante la modifica.
Usare un metodo di controllo personalizzato
Se è necessario personalizzare il passaggio tra questi componenti, o se il comportamento di EasyAR interferisce con il normale funzionamento di alcuni componenti, assicurarsi di disattivare queste opzioni e personalizzare il passaggio dei componenti secondo le seguenti regole di base:
- Disabilitare UnityEngine.XR.ARFoundation.ARSession nell'editor (viene eseguito prima di tutti gli altri script)
- Prima che AR Foundation inizi a funzionare, disabilitare tutti i componenti Unity XR Core e AR Foundation, oltre ai componenti o alle funzioni correlati da controllare
- Se durante il processo easyar.ARSession.Assemble() viene selezionato ARCoreARFoundationFrameSource o ARKitARFoundationFrameSource, abilitare tutti i componenti o le funzioni precedentemente disabilitati prima che StartSession() sia completato; di solito si consiglia di farlo nella risposta all'evento easyar.ARSession.AssembleUpdate
- Se durante il processo easyar.ARSession.Assemble() viene selezionato un altro FrameSource, mantenere invariato lo stato