Table of Contents

Controle do fluxo de session

Durante a execução de session, às vezes é necessário modificar componentes de session. Nesse caso, é preciso parar e reiniciar session. Às vezes também pode ser necessário parar algumas saídas de session. Este artigo descreve como controlar o fluxo de execução de session.

Antes de começar

Montagem de session

Normalmente, o processo de montagem é acionado automaticamente ao iniciar session.

O código a seguir executa implicitamente o processo de montagem.

Session.StartSession();

Em alguns casos, por exemplo quando é necessário verificar disponibilidade e suporte do dispositivo com antecedência, você também pode usar Assemble() para acionar manualmente o processo de montagem de session:

StartCoroutine(Session.Assemble());
Nota

Assemble() retorna uma coroutine e precisa ser iniciado por meio de StartCoroutine(IEnumerator).

Iniciar session

AutoStart controla se session inicia automaticamente. Se AutoStart for true (valor padrão), session será iniciado automaticamente em MonoBehaviour.Start().

Session também pode ser iniciado manualmente. Isso requer alterar AutoStart para false com antecedência. Depois, você pode usar StartSession() para iniciar session.

Session.StartSession();

Parar session

Você pode usar StopSession(bool) para parar session.

Session.StopSession(keepLastFrame);

O parâmetro keepLastFrame controla se a última imagem da câmera física será mantida depois que session parar. Isso é útil quando é necessário alternar entre diferentes sessions e pode evitar cintilação da tela.

Nota

keepLastFrame só pode controlar sessions cuja renderização de imagem é feita pela EasyAR. Em geral, esse parâmetro é inválido ao usar AR Foundation ou headsets.

Parar a saída de session

Quando session está em execução, você pode controlar a saída de session por meio de enabled.

O código a seguir pode parar toda a saída de session. Nesse momento, session ainda está em execução, mas nenhum conteúdo será atualizado, incluindo a imagem da câmera física renderizada pela EasyAR e os transforms de todos os nós controlados pela EasyAR.

Session.enabled = false;

Parar a renderização da imagem da câmera física por session

Você pode usar ARAssembly.CameraImageRenderer para controlar a renderização da imagem da câmera física.

O código a seguir pode parar a renderização da imagem da câmera física:

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

Observe que primeiro é necessário verificar se ARAssembly.CameraImageRenderer existe.

Nota

ARAssembly.CameraImageRenderer só é válido em sessions cuja renderização de imagem é feita pela EasyAR. Em geral, ele é inválido ao usar AR Foundation ou headsets. Nesse caso, a renderização da imagem da câmera física é feita pelo AR Foundation ou pelo SDK do headset.

Próximos passos