Table of Contents

Управление потоком session

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

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

Сборка session

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

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

Session.StartSession();

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

StartCoroutine(Session.Assemble());
Примечание

Assemble() возвращает корутину, которую нужно запустить через StartCoroutine(IEnumerator).

Запуск session

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

Session также можно запустить вручную. Для этого нужно заранее изменить AutoStart на false. Затем можно использовать StartSession() для запуска session.

Session.StartSession();

Остановка session

Для остановки session можно использовать StopSession(bool).

Session.StopSession(keepLastFrame);

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

Примечание

keepLastFrame может управлять только sessions, в которых отрисовка изображения выполняется EasyAR. Как правило, при использовании AR Foundation или гарнитур этот параметр недействителен.

Остановка вывода session

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

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

Session.enabled = false;

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

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

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

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

Обратите внимание, что сначала нужно проверить, существует ли ARAssembly.CameraImageRenderer.

Примечание

ARAssembly.CameraImageRenderer действителен только в sessions, где отрисовка изображения выполняется EasyAR. Как правило, при использовании AR Foundation или гарнитур он недействителен. В этом случае отрисовка изображения физической камеры выполняется AR Foundation или SDK гарнитуры.

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