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
- Comprende los conceptos básicos, componentes y flujo de trabajo de una sesión a través de Introducción a ARSession
- Aprende cómo crear una sesión
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
- Prueba acceder a componentes de funciones AR para más métodos de control de funciones AR
- Aprende cómo obtener resultados de la ejecución de la sesión
- Comprende cómo verificar disponibilidad y compatibilidad del dispositivo