Table of Contents

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

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,

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.

alt text

Das Verhalten der Optionen in der Abbildung ist wie folgt:

  • Editor: Optionen für den Bearbeitungsmodus
  • 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 Startup in Project Settings > XR Plug-in Management ausgewä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 Startup in Project Settings > XR Plug-in Management nicht 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:

  1. Deaktivieren Sie UnityEngine.XR.ARFoundation.ARSession im Editor (sie liegt in der Ausführungsreihenfolge vor allen anderen scripts)
  2. 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
  3. 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
  4. Wenn während easyar.ARSession.Assemble() ein anderer FrameSource ausgewählt wird, bleibt der Zustand unverändert

Verwandte Themen