O que são Corrotinas?

Corrotinas ou “Coroutines”, são funções essenciais na programação durante o desenvolvimento de jogos.
Pois, permitem a execução de processos assíncronos sem bloquear o fluxo principal do jogo.
Na Unity, as corrotinas são métodos que podem ser pausados e retomados em diferentes frames.
E isso acaba sendo muito útil para lidar com temporizações, animações, IA e outras mecânicas que precisam ocorrer ao longo do tempo.
Em resumo, é possível pausar sua execução até certo ponto, e prosseguir a leitura dos comandos abaixo, após o período de pausa.
Elas são implementadas em C# usando IEnumerator, junto com a palavra-chave yield, como mostrado na imagem.
Quando devemos usá-las?

As corrotinas são ideais quando precisamos que uma ação ocorra ao longo do tempo sem interromper o fluxo do jogo.
Por exemplo, ao criar animações de Hit, onde precisamos que o sprite pisque em tempos variados após o dano.
Ou seja, em animações simples, delay entre ações, movimentação suave, IA de inimigos, efeitos visuais e sonoros, etc.
No entanto, as corrotinas não devem ser usadas para tudo, como cálculos constantes ou interações físicas.
Pois, nesses casos prefira os Updates e eventos, afinal as corrotinas não são a solução mais eficiente nesses casos.
Quais os perigos do seu uso?

Um erro comum entre iniciantes é iniciar corrotinas sem controle sobre elas.
E como resultado, várias instâncias podem ser ativadas sem necessidade, causando comportamentos inesperados.
E um dos problemas mais comuns é um comando seu iniciado em uma corrotina, e não ser finalizado corretamente.
Fazendo com que no meio da execução de outra corrotina, a ordem anterior seja executada.
Assim teríamos 2 ou mais corrotinas funcionado sobrepostas, quebrando a lógica da mecânica, e resultando em bugs graves!
Perigos do StopAllCoroutines

Outro erro comum é o uso indiscriminado de ‘StopAllCoroutines()’.
Pois, esse comando interrompe todas as corrotinas do objeto, podendo causar efeitos indesejados ao interromper processos importantes.
Em vez disso, prefira parar apenas a corrotina específica que deseja interromper.
Por isso use o StopAllCoroutines, apenas quando realmente quiser para toda a lógica.
E garanta que seja chamada uma função que restaure todas as variáveis para os valores padrões, caso tudo seja interrompido!

As corrotinas são extremamente úteis, por permitir a pausa no meio da execução de uma função.
Mas devem ser usadas com cautela e evitando iniciar múltiplas instâncias sem controle.
Utilizando boas práticas, suas corrotinas serão eficientes e seu jogo terá uma melhor performance e organização no código!
Agora que você aprendeu a gerenciar corrotinas corretamente, que tal aprofundar ainda mais seus conhecimentos sobre desenvolvimento de jogos?
Clique aqui e confira nosso curso Start Gamedev e dê o próximo passo na sua jornada como desenvolvedor!
Ou veja um vídeo review completo logo abaixo:
Seja o primeiro a comentar.