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 гарнитуры.

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