Commutazione automatica degli oggetti Unity XR nella scena Unity
I componenti XR di Unity (incluso AR Foundation) supportano solo un numero limitato di dispositivi. Per utilizzare AR Foundation sui dispositivi supportati e allo stesso tempo sfruttare le funzionalità AR su molti altri dispositivi, EasyAR offre la funzionalità di commutazione automatica degli oggetti Unity XR. Di seguito vengono illustrate le modifiche agli oggetti della scena e il metodo di utilizzo.
Prima di iniziare
- Leggere Supporto di EasyAR per il framework Unity XR per comprendere il supporto di EasyAR per il framework Unity XR e quando considerare l'utilizzo di AR Foundation.
- Assicurarsi che la scena sia configurata come descritto in Configurazione e utilizzo della scena AR Foundation nei progetti EasyAR, aggiungendo ARSession e XROrigin di AR Foundation.
Funzionalità
Poiché l'implementazione sottostante di AR Foundation di Unity sui telefoni è ARCore e ARKit, utilizzabile solo su un numero limitato di dispositivi, specialmente su molti telefoni Android cinesi, si consiglia generalmente di abilitare AR Foundation e gli script correlati solo sui dispositivi supportati. La funzionalità di commutazione automatica degli oggetti Unity XR implementa questa operazione, progettata principalmente per AR mobile, mentre sui visori è disabilitata per impostazione predefinita.
Quando la funzionalità completa è abilitata,
- Nell'editor, easyar.ARSession disabilita UnityEngine.XR.ARFoundation.ARSession
- Durante il runtime, easyar.ARSession disabilita tutti i componenti Unity XR Core e AR Foundation durante Awake().
- Durante il runtime, se il FrameSource selezionato eredita da ARFoundationFrameSource o implementa un ExternalDeviceFrameSource con origine XROrigin, allora i componenti Unity XR Core e AR Foundation disabilitati verranno abilitati durante easyar.ARSession.StartSession() (quelli non disabilitati da EasyAR non verranno abilitati). Se viene selezionato un altro FrameSource, durante easyar.ARSession.StartSession() verranno disabilitati tutti i componenti Unity XR Core e AR Foundation.
- Durante il runtime, tutti i componenti Unity XR Core e AR Foundation verranno disabilitati durante easyar.ARSession.StopSession(bool).
Nella configurazione predefinita, le condizioni di abilitazione sono le seguenti,
- Abilitato su Windows/Mac.
- Abilitato se, all'avvio del commutatore, il loader per AR mobile (ARKit/ARCore) è attivo.
- Disabilitato se, all'avvio del commutatore, sono presenti altri loader oltre ad AR mobile (ARKit/ARCore), ma nessuno di essi è attivo.
Nota
I componenti di XR Interaction Toolkit non sono controllati da questa funzionalità, ma la loro compatibilità con EasyAR non è verificata. Teoricamente, le funzionalità che utilizzano solo il GameObject Unity.XR.CoreUtils.XROrigin e la sua Camera dovrebbero funzionare normalmente. In caso di comportamenti anomali, provare a impostare ARSession.ARCenterMode su ARSession.ARCenterMode.SessionOrigin. Se la funzionalità continua a non funzionare correttamente, sarà necessario implementare un controllo personalizzato dei componenti di XR Interaction Toolkit, disabilitando i componenti correlati quando FrameSource non eredita da ARFoundationFrameSource.
Metodo di configurazione
Questa funzionalità può essere abilitata o disattivata tramite le opzioni in Project Settings > EasyAR > Sense > Unity XR > Unity XR Auto Switch.

Le opzioni nell'immagine configurano il comportamento come segue:
- Editor: opzioni per la modalità editor
- Disable AR Session: se è presente easyar.ARSession, disabilita UnityEngine.XR.ARFoundation.ARSession durante l'editing.
- Player: opzioni per la modalità runtime
- Enable: abilita il controllo durante il runtime. Nota: quando questa opzione è disattivata, i componenti disabilitati nella modalità editor non verranno ripristinati durante il runtime.
- Enable If Desktop: abilitato su Windows/Mac.
- Enable If Mobile AR On Startup: abilitato se, all'avvio del commutatore, il loader per AR mobile (ARKit/ARCore) è attivo. Di solito questa opzione richiede che
Initialize XR on StartupinProject Settings>XR Plug-in Managementsia selezionato. - Disable If Non Mobile AR Post Startup: disabilitato se, all'avvio del commutatore, sono presenti altri loader oltre ad AR mobile (ARKit/ARCore), ma nessuno di essi è attivo. Di solito questa opzione viene utilizzata quando
Initialize XR on StartupinProject Settings>XR Plug-in Managementnon è selezionato. - Restore AR Session When Disabled: quando la funzionalità è disabilitata, ripristina (abilita) tutti i UnityEngine.XR.ARFoundation.ARSession disabilitati (indipendentemente dal fatto che siano stati disabilitati da EasyAR). Questa opzione viene solitamente utilizzata per ripristinare i componenti disabilitati durante l'editing.
Utilizzo di un metodo di controllo personalizzato
Se è necessario personalizzare la commutazione di questi componenti o se il comportamento di EasyAR interferisce con il funzionamento di alcuni componenti, assicurarsi di disattivare queste opzioni e seguire le seguenti regole di base per la commutazione personalizzata dei componenti:
- Disabilitare UnityEngine.XR.ARFoundation.ARSession nell'editor (viene eseguito prima di tutti gli altri script)
- Disabilitare tutti i componenti Unity XR Core, AR Foundation e i componenti o funzionalità correlati che devono essere controllati prima che AR Foundation inizi a funzionare
- Se durante il processo easyar.ARSession.Assemble() viene selezionato ARCoreARFoundationFrameSource o ARKitARFoundationFrameSource, abilitare tutti i componenti o funzionalità precedentemente disabilitati prima del completamento di StartSession(), solitamente consigliato durante la risposta all'evento easyar.ARSession.AssembleUpdate
- Se durante il processo easyar.ARSession.Assemble() viene selezionato un altro FrameSource, mantenere lo stato invariato