Table of Contents

Управление процессом сессии

Во время работы сессии иногда требуется внести изменения в компоненты сессии, что требует остановки и перезапуска сессии. Иногда также может потребоваться остановить некоторые выходные данные сессии. В этой статье объясняется, как управлять процессом работы сессии.

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

Сборка сессии

Обычно процесс сборки запускается автоматически при старте сессии.

Следующий код неявно выполняет процесс сборки:

Session.StartSession();

Иногда, например при необходимости предварительной проверки доступности и поддержки устройств, можно использовать Assemble() для ручного запуска процесса сборки сессии:

StartCoroutine(Session.Assemble());

[!ПРИМЕЧАНИЕ] Assemble() возвращает корутину, которую необходимо запустить через StartCoroutine(IEnumerator).

Запуск сессии

AutoStart управляет автоматическим запуском сессии. Если AutoStart имеет значение true (значение по умолчанию), сессия запускается автоматически во время MonoBehaviour.Start().

Сессию также можно запустить вручную, предварительно установив AutoStart в false. Затем для запуска сессии можно использовать StartSession():

Session.StartSession();

Остановка сессии

Для остановки сессии используйте StopSession(bool):

Session.StopSession(keepLastFrame);

Параметр keepLastFrame позволяет управлять сохранением последнего кадра изображения с физической камеры после остановки сессии. Это полезно при переключении между разными сессиями для предотвращения мерцания изображения.

[!ПРИМЕЧАНИЕ] keepLastFrame работает только для сессий, где отрисовка изображения выполняется EasyAR. Как правило, при использовании AR Foundation или гарнитур этот параметр неэффективен.

Остановка вывода сессии

Во время работы сессии выводом можно управлять через enabled.

Следующий код останавливает весь вывод сессии. Сессия продолжает работать, но не обновляет контент (включая изображение с физической камеры, отрисовываемое EasyAR, и все transform узлов, управляемых EasyAR):

Session.enabled = false;

Остановка отрисовки изображения с физической камеры

Для управления отрисовкой изображения с физической камеры используйте ARAssembly.CameraImageRenderer.

Следующий код останавливает отрисовку изображения с физической камеры:

if (Session.Assembly != null && Session.Assembly.CameraImageRenderer.OnSome)
{
    Session.Assembly.CameraImageRenderer.Value.enabled = false;
}

Важно предварительно проверить существование ARAssembly.CameraImageRenderer.

[!ПРИМЕЧАНИЕ] ARAssembly.CameraImageRenderer работает только в сессиях, где отрисовка выполняется EasyAR. Как правило, при использовании AR Foundation или гарнитур он неэффективен, так как отрисовка выполняется средствами AR Foundation или SDK гарнитуры.

Следующие шаги