Toda Game Engine por padrão traz para seu usuário, um sistema completo para desenvolver jogos.
E isso envolve sistema de física, renderização, iluminação, e inclusive um Sistema de inicialização.
Ou seja, uma ordem que nos diz o que será inicializado primeiro, e na Unity não é diferente.
Start e Awake
Ao criarmos um novo Script, por padrão a Unity já nos traz 2 funções prontas, o Start e o Update.
Pois, são os mais utilizados, onde o Start é chamado 1 vez ao inicializar, e o Update é chamado a cada frame.
Mas existem diversas outras funções na ordem de execução da Unity, que podem ser muito uteis para nós.
E uma delas é o Awake, que é muito semelhante à função Start, também sendo chamado 1 vez ao inicializar.
Porém, apesar de serem iguais, essa função é chamada antes de todos os Starts de qualquer script em cena.
E esse detalhe é muito importante, pois, nos ajuda a organizar a lógica de funcionamento dos nossos scripts.
Pois, como bem sabemos, qualquer componente que precisa ser manipulado, deve ser referenciado.
Qual eu devo usar?
Tanto o Start quanto o Awake, são excelentes para referenciar componentes e inicializar variáveis.
Mas, como o Awake é chamado antes do Start, então seria uma melhor prática utiliza-lo para referenciar componentes.
Porque um erro comum que acontece é quando tentamos acessar um componente em outro Script.
E tanto a ação de acessar esse componente quanto a de referenciar é feita no Start dos teus respectivos scripts.
Nesse caso pode acontecer de o Start que acessa, iniciar antes do que irá referenciar, e ocorro erro de referência (Bug).
E é ai que entra a importância do Awake, pois, usando ele para referenciar os componentes, esse erro não acontece.
Pois, como vimos o Awake será iniciado antes de qualquer outro Start, trazendo o fluxo lógico correto para nosso código.
Em resumo, quando criar uma lógica para seu jogo, faça uma análise do que precisa ser iniciado primeiro.
E assim, use o Awake para referenciar seus componentes ou iniciar variáveis que precisarão ser chamadas no Start.
E quando o Start rodar, todas as informações que ele precisar usar, já estão devidamente prontas e referenciadas.
Por fim, é extremamente importante entender os detalhes existentes entre as funções, mesmo que pareçam iguais.
Pois, existe um porque de terem esses detalhes a parte, e sem dúvidas te ajudarão em pontos específicos.
Logo abaixo, deixaremos um vídeo completo sobre a ordem de execução da Unity.
Seja o primeiro a comentar.