Управление потоком session
Во время работы session иногда требуется изменить компоненты session. В этом случае нужно остановить и снова запустить session. Иногда также может потребоваться остановить некоторые выходные данные session. В этой статье описано, как управлять потоком работы session.
Перед началом
- Изучите основные понятия, состав и рабочий процесс session в разделе Обзор ARSession
- Узнайте, как создать 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 гарнитуры.
Следующие шаги
- Попробуйте обратиться к компонентам AR-функций, чтобы узнать больше способов управления AR-функциями
- Узнайте, как получить результаты работы session
- Узнайте, как проверить доступность и поддержку устройства