Table of Contents

Flujo de control de la sesión

Durante el funcionamiento de una sesión, a veces es necesario modificar los componentes de la sesión, lo que requiere detenerla y reiniciarla. En ocasiones, también puede ser necesario detener ciertas salidas de la sesión. Este documento explica cómo controlar el flujo de ejecución de una sesión.

Antes de comenzar

Ensamblaje de la sesión

Normalmente, el proceso de ensamblaje se activa automáticamente al iniciar la sesión.

El siguiente código ejecuta implícitamente el proceso de ensamblaje:

Session.StartSession();

En algunos casos, como cuando se necesita verificar disponibilidad y compatibilidad del dispositivo de antemano, también se puede usar Assemble() para activar manualmente el ensamblaje:

StartCoroutine(Session.Assemble());
Nota

Assemble() devuelve una corrutina que debe iniciarse mediante StartCoroutine(IEnumerator).

Iniciar la sesión

AutoStart controla si la sesión se inicia automáticamente. Si AutoStart es true (valor predeterminado), la sesión se iniciará automáticamente durante MonoBehaviour.Start().

La sesión también se puede iniciar manualmente, lo que requiere establecer AutoStart en false previamente. Luego se puede usar StartSession() para iniciar la sesión:

Session.StartSession();

Detener la sesión

Se puede usar StopSession(bool) para detener la sesión:

Session.StopSession(keepLastFrame);

El parámetro keepLastFrame controla si se conserva la última imagen de la cámara física después de detener la sesión. Esto es útil al cambiar entre diferentes sesiones para evitar parpadeos en la pantalla.

Nota

keepLastFrame solo afecta a sesiones donde EasyAR realiza el renderizado. Generalmente, este parámetro no tiene efecto al usar AR Foundation o dispositivos de visualización montados en la cabeza.

Detener la salida de la sesión

Durante la ejecución de la sesión, se puede controlar su salida mediante enabled.

El siguiente código detiene todas las salidas de la sesión. La sesión sigue ejecutándose, pero no actualiza ningún contenido (incluyendo la imagen de la cámara física renderizada por EasyAR y todos los transform de nodos controlados por EasyAR):

Session.enabled = false;

Detener el renderizado de la imagen de la cámara física

Se puede usar ARAssembly.CameraImageRenderer para controlar el renderizado de la imagen de la cámara física.

El siguiente código detiene el renderizado de la imagen de la cámara física:

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

Es importante verificar primero si existe ARAssembly.CameraImageRenderer.

Nota

ARAssembly.CameraImageRenderer solo es efectivo en sesiones donde EasyAR realiza el renderizado. Generalmente, no tiene efecto al usar AR Foundation o SDK de dispositivos de visualización montados en la cabeza, donde el renderizado lo manejan esas tecnologías.

Pasos siguientes