Unity XR-Objekte in Unity-Szenen automatisch umschalten
Die XR-Komponenten von Unity (einschließlich AR Foundation) unterstützen nur begrenzte Geräte. Damit AR Foundation auf unterstützten Geräten genutzt werden kann und gleichzeitig AR-Funktionen auf vielen anderen Geräten verfügbar bleiben, stellt EasyAR eine Funktion zum automatischen Umschalten von Unity XR-Objekten bereit. Im Folgenden werden die Änderungen an Szenenobjekten und die Verwendung dieser Funktion beschrieben.
Vor dem Start
- Lesen Sie EasyAR-Unterstützung für das Unity XR-framework, um die Unterstützung von EasyAR für das Unity XR-framework zu verstehen und zu erfahren, wann AR Foundation in Betracht gezogen werden kann.
- Stellen Sie sicher, dass die Szene gemäß AR Foundation-Szenenkonfiguration und Verwendung in EasyAR-Projekten ARSession und XROrigin von AR Foundation hinzugefügt hat.
Funktionsbeschreibung
Da Unitys AR Foundation auf Mobiltelefonen intern ARCore und ARKit verwendet, kann sie nur auf begrenzten Geräten genutzt werden, insbesondere nicht auf vielen chinesischen Android-Telefonen. Daher wird normalerweise empfohlen, AR Foundation und zugehörige Funktions-scripts nur auf unterstützten Geräten zu aktivieren. Die Funktion zum automatischen Umschalten von Unity XR-Objekten setzt diese Operation um. Sie ist hauptsächlich für mobile AR ausgelegt und auf Headsets in der Standardkonfiguration deaktiviert.
Wenn die vollständige Funktion aktiviert ist,
- Im Editor deaktiviert easyar.ARSession UnityEngine.XR.ARFoundation.ARSession
- Zur Laufzeit deaktiviert easyar.ARSession in Awake() alle Unity XR Core-Komponenten und AR Foundation-Komponenten.
- Zur Laufzeit werden die deaktivierten Unity XR Core- und AR Foundation-Komponenten bei easyar.ARSession.StartSession() aktiviert, wenn der ausgewählte FrameSource von ARFoundationFrameSource erbt oder ein ExternalDeviceFrameSource ist, der den Ursprung XROrigin implementiert (Komponenten, die nicht von EasyAR deaktiviert wurden, werden nicht aktiviert). Wenn ein anderer FrameSource ausgewählt wird, werden bei easyar.ARSession.StartSession() alle Unity XR Core- und AR Foundation-Komponenten deaktiviert.
- Zur Laufzeit werden alle Unity XR Core- und AR Foundation-Komponenten bei easyar.ARSession.StopSession(bool) deaktiviert.
In der Standardkonfiguration gelten folgende Aktivierungsbedingungen:
- Aktiviert auf Windows/Mac.
- Beim Start des switcher wird aktiviert, wenn der loader für mobile AR (ARKit/ARCore) aktiv ist.
- Beim Start des switcher wird deaktiviert, wenn andere loader neben mobile AR (ARKit/ARCore) vorhanden sind, aber keiner davon aktiv ist.
Anmerkung
Komponenten des XR Interaction Toolkit werden von dieser Funktion nicht gesteuert, und ihre Verfügbarkeit in EasyAR wurde nicht verifiziert. Theoretisch sollten Funktionen, die nur das GameObject Unity.XR.CoreUtils.XROrigin und dessen Camera verwenden, normal funktionieren. Bei abnormalem Verhalten können Sie versuchen, ARSession.ARCenterMode auf ARSession.ARCenterMode.SessionOrigin zu setzen. Wenn die Funktion weiterhin nicht normal arbeitet, müssen Sie eine eigene Steuerung für XR Interaction Toolkit-Komponenten implementieren und zugehörige Komponenten deaktivieren, wenn FrameSource nicht von ARFoundationFrameSource erbt.
Konfigurationsmethode
Diese Funktion kann über die Optionen unter Unity XR > Unity XR Auto Switch in Project Settings > EasyAR > Sense aktiviert oder deaktiviert werden.

Das Verhalten der Optionen in der Abbildung ist wie folgt:
- Editor: Optionen für den Bearbeitungsmodus
- Disable AR Session: Wenn easyar.ARSession vorhanden ist, wird UnityEngine.XR.ARFoundation.ARSession beim Bearbeiten deaktiviert.
- Player: Optionen für den Laufzeitmodus
- Enable: Aktiviert die Laufzeitsteuerung. Hinweis: Wenn diese Option deaktiviert ist, werden im Bearbeitungsmodus deaktivierte Komponenten zur Laufzeit nicht wiederhergestellt.
- Enable If Desktop: Aktiviert auf Windows/Mac.
- Enable If Mobile AR On Startup: Aktiviert beim Start des switcher, wenn der loader für mobile AR (ARKit/ARCore) aktiv ist. Normalerweise muss dafür
Initialize XR on StartupinProject Settings>XR Plug-in Managementausgewählt sein. - Disable If Non Mobile AR Post Startup: Deaktiviert beim Start des switcher, wenn andere loader neben mobile AR (ARKit/ARCore) vorhanden sind, aber keiner aktiv ist. Diese Option wird normalerweise verwendet, wenn
Initialize XR on StartupinProject Settings>XR Plug-in Managementnicht ausgewählt ist. - Restore AR Session When Disabled: Wenn die Funktion deaktiviert ist, werden alle deaktivierten UnityEngine.XR.ARFoundation.ARSession wiederhergestellt (aktiviert), unabhängig davon, ob sie von EasyAR deaktiviert wurden. Diese Option dient normalerweise zur Wiederherstellung von Komponenten, die beim Bearbeiten deaktiviert wurden.
Eigene Steuerungsmethode verwenden
Wenn das Umschalten dieser Komponenten angepasst werden muss oder das Verhalten von EasyAR den normalen Betrieb bestimmter Komponenten stört, stellen Sie sicher, dass diese Optionen deaktiviert sind, und passen Sie das Umschalten der Komponenten nach den folgenden Grundregeln an:
- Deaktivieren Sie UnityEngine.XR.ARFoundation.ARSession im Editor (sie liegt in der Ausführungsreihenfolge vor allen anderen scripts)
- Deaktivieren Sie vor dem Start von AR Foundation alle Unity XR Core-Komponenten, AR Foundation-Komponenten sowie zugehörige Komponenten oder Funktionen, die gesteuert werden müssen
- Wenn während easyar.ARSession.Assemble() ARCoreARFoundationFrameSource oder ARKitARFoundationFrameSource ausgewählt wird, aktivieren Sie alle zuvor deaktivierten Komponenten oder Funktionen, bevor StartSession() abgeschlossen ist; normalerweise wird empfohlen, dies in der Ereignisantwort easyar.ARSession.AssembleUpdate zu tun
- Wenn während easyar.ARSession.Assemble() ein anderer FrameSource ausgewählt wird, bleibt der Zustand unverändert