Seguindo o que propus no projeto teste Space Marauders, fiz a cena de loading. Eu já fiz umas 4 vezes já esse tipo de código, mas como quase tudo nesse projeto eu preciso relembrar e achei um tutorial muito legal, que inclusive me mostrou uma forma de fazer diferente.
O Blog do tal do Jhon, gamedevbeginner, apresenta 3 formas, que na verdade são 2 de fazer o loading de cena. Fazer o loading dentro da cena e fazer o loading de uma cena externa. A primeira, achei interessante mas não é aderente ao projeto, o loading dentro da cena, mantendo inclusive a UI, bem bacana para quem tem muitas fases diferentes e não quer gerenciar essas múltiplas fases.
O Space Marauders terá 3 cenas básicas, a cena de menu, a cena da cidade e a cena da batalha de nave, por serem poucas, eu opto por ter uma cena adicional que controle o loading.
Não vou entrar no algoritmo em si do gamedevbeginner, quem quiser dá uma olhada lá, até por que eu mudei ele, acabei fazendo uma mescla com um conceito da 1ª opção, pois achei interessante manter um objeto que não é destruído no jogo, assim posso transitar não só apenas informação de loading, mas de qualquer coisa que eu precise. Com isso não mantive a classe estática, substitui ela por um objeto que não se destrói. Mas segue a imagem do blog gamedevbeginner do colega para exemplificar o que eu fiz:
O coleguinha gamedevbeginner tb postou um vídeo muito bom sobre loadings no geral:
Próximo passo, login e controle de usuário, go!