Table of Contents

Автоматическое переключение объектов Unity XR в сцене Unity

Компоненты XR Unity (включая AR Foundation) поддерживают ограниченный набор устройств. Чтобы использовать AR Foundation на поддерживаемых устройствах, одновременно обеспечивая AR-функции на множестве других устройств, EasyAR предоставляет возможность автоматического переключения объектов Unity XR. Ниже описаны изменения объектов сцены и способы использования этой функции.

Перед началом

Функциональные возможности

Поскольку AR Foundation Unity на мобильных устройствах использует под капотом ARCore и ARKit, она работает только на ограниченном наборе устройств, особенно на многих китайских Android-смартфонах она недоступна. Поэтому обычно рекомендуется включать AR Foundation и связанные с ней скрипты только на поддерживаемых устройствах. Функция автоматического переключения объектов Unity XR реализует эту операцию, в основном предназначена для мобильного AR, и по умолчанию отключена на гарнитурах.

При полной активации функции:

В конфигурации по умолчанию функция активируется при следующих условиях:

  • Включена на Windows/Mac.
  • Включается при запуске переключателя, если загрузчик (loader) мобильного AR (ARKit/ARCore) активен.
  • Отключается при запуске переключателя, если существуют загрузчики, отличные от мобильного AR (ARKit/ARCore), но ни один из них не активен.
Примечание

Компоненты XR Interaction Toolkit не контролируются этой функцией, но их работоспособность в EasyAR не проверена. Теоретически, функции, использующие только GameObject Unity.XR.CoreUtils.XROrigin и его камеру, должны работать нормально. При аномальном поведении попробуйте установить ARSession.ARCenterMode в значение ARSession.ARCenterMode.SessionOrigin. Если функциональность все еще не работает, необходимо реализовать пользовательское управление компонентами XR Interaction Toolkit, отключая их, когда FrameSource не наследуется от ARFoundationFrameSource.

Метод настройки

Эту функцию можно включить или выключить с помощью опций в Project Settings > EasyAR > Sense > Unity XR > Unity XR Auto Switch.

alt text

Поведение функции настраивается следующими опциями:

  • Editor: Настройки для режима редактирования
  • Player: Настройки для режима выполнения
    • Enable: Включает управление во время выполнения. Примечание: если эта опция выключена, компоненты, отключенные в редакторе, не будут восстановлены во время выполнения.
    • Enable If Desktop: Включает на Windows/Mac.
    • Enable If Mobile AR On Startup: Включает функцию при запуске переключателя, если загрузчик мобильного AR (ARKit/ARCore) активен. Обычно для работы этой опции в Project Settings > XR Plug-in Management должен быть выбран Initialize XR on Startup.
    • Disable If Non Mobile AR Post Startup: Отключает функцию при запуске переключателя, если существуют загрузчики, отличные от мобильного AR (ARKit/ARCore), но ни один из них не активен. Обычно эта опция используется, когда в Project Settings > XR Plug-in Management опция Initialize XR on Startup не выбрана.
    • Restore AR Session When Disabled: При отключенной функции восстанавливает (включает) все отключенные UnityEngine.XR.ARFoundation.ARSession (независимо от того, были ли они отключены EasyAR). Эта опция обычно используется для восстановления компонентов, отключенных во время редактирования.

Использование пользовательского метода управления

Если требуется пользовательское управление переключением этих компонентов или поведение EasyAR мешает работе некоторых компонентов, необходимо отключить эти опции и реализовать пользовательское переключение компонентов, следуя основным правилам:

  1. Отключите UnityEngine.XR.ARFoundation.ARSession в редакторе (оно выполняется раньше всех других скриптов).
  2. Перед началом работы AR Foundation отключите все компоненты Unity XR Core, AR Foundation и любые другие связанные компоненты или функции, которыми нужно управлять.
  3. Если в процессе easyar.ARSession.Assemble() выбран ARCoreARFoundationFrameSource или ARKitARFoundationFrameSource, включите все ранее отключенные компоненты или функции до завершения StartSession(). Обычно рекомендуется делать это в обработчике события easyar.ARSession.AssembleUpdate.
  4. Если в процессе easyar.ARSession.Assemble() выбран другой FrameSource, оставьте состояние компонентов неизменным.

Связанные темы