1
resposta

Como tratar casos em que preciso utilizar um loop while na lógica do meu método, mas que seu retorno não seja IEnumarator?

Existem diversos casos onde precisamos utilizar um loop while para diversos fins, mas que não necessariamente o método irá retornar IEnumerator. A utilização de loop while deve ser sempre utilizado com o método retornando IEnumerator para evitar problemas na Unity, ou depende de caso a caso?

1 resposta

Oi, João, tudo bem?

Esse é um assunto um pouco polêmico hehe.

Não temos nenhuma restrição de usar while na Unity o problema é a chamada deles nos Game Loops, usando um while no Start por exemplo na maioria das vezes não vai te causar nenhum problema. Diferente do while no Update por exemplo que trava a execução até o while terminar e isso está acontecendo a todo frame, então o prejuízo é grande. Por isso é uma boa usarmos as coroutines pra evitar esse problema, mas abusar de coroutines também não é uma boa prática.

O ideal é ter um equilíbrio entre o que você precisa que aconteça e não usar coroutines sempre abusando de fake randoms ou outras práticas para melhorar a performance. Num curso a frente desse por exemplo quando formos instanciar zumbis vamos procurar uma área não ocupada. Mas vamos fazer isso numa área pequena o que torna o processo bastante rápido.

Tente ter alguma forma de controlar o final da execução pra evitar o uso de while o tempo todo.

Qualquer dúvida estamos por aqui :)