Gostamos sempre de lembrar a grande importância de mantermos uma boa organização em nossos códigos.
Pois, assim se torna muito mais fácil de implementar novas mecânicas, corrigir bugs, trabalhar em equipe, etc.
Mas essa organização se estende a todo nosso projeto, e não apenas ao código em si.
Organizando nosso Projeto na Unity
Manter todo o nosso projeto organizado, ajuda a acelerar o fluxo de trabalho, seja sozinho ou em equipe.
Pois, tudo fica mais fácil de ser encontrado, e fora do nosso código também devemos manter um padrão de organização.
Pois, quando precisarmos buscar um asset, um material, ou um script, em específico, saberemos de cara onde encontrar.
Então vamos deixar aqui algumas dicas que podem ajudar a organizar melhor, a área de trabalho na Unity.
O uso dessas dicas não é obrigatório, mas aplica-las te tornará um desenvolvedor mais próximo da realidade do mercado de trabalho!
Organize bem suas pastas:
Busque sempre organizar suas pastas como categorias, que deixem bem claro o tipo de arquivo que nela contém.
Pois, guardamos os arquivos do game na pasta Assets, mas sem Subdividir em pastas, os arquivos podem se misturar e se perder.
Então crie pastas para Scripts, Animations, Prefabs, Sprites, Audios, Materials, Scenes, etc, deixando muito mais claro.
E dentro de cada pasta é necessário subdividir em mais pastas, para deixar ainda mais organizado.
Por exemplo, na pasta Scripts, pode conter pastas para Player, Enemy, Damages, Saves, e quantas forem necessárias.
Dicas para organizar a Hierarquia da Unity
A hierarquia da Unity é aonde se encontra todos os objetos do jogo, que estão em cena no momento.
E nela se encontra desde a câmera do game, player, cenário, em resumo, uma quantia enorme de GameObjetcs.
Por isso, aqui também é de extrema importância organizar, pois, ela facilmente vira uma bagunça durante a Gameplay.
Crie gameObjects Pai:
E a primeira dica seria sempre agrupar gameObjects similares em um gameObject pai, com a única função de guarda-los.
Por exemplo, se na sua cena exitem dezenas de árvores, então seria uma boa prática criar um gameObject para agrupa-las.
Então você criaria um gameObject “Árvores”, zera as posições dele, seleciona todas as árvores e arrasta pra dentro.
Crie gameObjects título:
Outra dica seria criar gameObjects vazios com títulos de categorias, da mesma forma que fazemos com as pastas.
Mas seus nomes seriam nesse modelo: “—- Lights —–”, para se destacarem dos demais gameObjects da hierarquia.
E então você poderia, coloca-las acima de determinados gameObjects, definindo regiões bem divididas na hierarquia.
Ou também arrastar os gameObjects referentes a essa classe para dentro dele, exatamente como no exemplo das pastas.
Organize melhor o seu Inspector!
Já no Inspector é onde literalmente configuramos todo o nosso game, e manipularemos diretamente os scripts.
Então existem algumas dicas que ajudam diretamente neste tópico.
Então uma boa prática com relação ao inspector seria dividir as mecânicas do seu game em vários scripts.
Pois, deixando tudo em um só, a quantidade de variáveis no inspector é muito grande, o que fica confuso.
O simples fato de dividir em mais scripts, já separa em classes o que cada variável controla, melhorando nossa visualização.
PropertyAtributes:
Para melhor organizar a visualização do nosso inspector, podemos ainda fazer o bom uso dos PropertyAtributes.
E estes são comandos que exercem ação diretamente em como vemos e organizamos nossas variáveis no inspector.
E para utiliza-los basta acrescentar os comandos acima, ou antes das variáveis que você queira que seja realizado a ação.
Existem muitos comandos disponíveis, mas mostraremos os que são mais comuns e utilizados pelos Devs.
Organizar grupos de variáveis em tópicos:
Podemos ter a necessidade de agrupar algumas variáveis de acordo com as funções as quais elas controlam.
E para isso utilizamos o comando: [ Header (“Exemplo: “) ], acima de um grupo de variáveis, indicando suas funções.
Mas é importante que o título seja bem claro e intuitivo, deixando bem claro o que faz aquela região.
Por exemplo, separando em categorias como, Components, Attributes, Stats, Prefabs, Spawns, etc.
Revelar variáveis privadas no Inspector:
Por padrão, variáveis privadas além de não serem acessíveis de outras classes, também são ocultas do Inspector.
E isso se deve ao fato de elas terem um certo nível de segurança, sendo consideradas boas práticas.
Porém, pode haver casos onde você tenha a necessidade de revelar essas variáveis lá no seu editor.
E para isso utilizamos o comando: [ SerializeField ], acima, ou antes da variável privada que precisa ser revelada.
Ocultar variáveis públicas:
Já variáveis públicas, por padrão são mostradas no inspector e também podem ser acessadas de outras classes mais facilmente.
E mesmo as que são declaradas apenas para serem acessadas de outros scripts.
E em algum momento você pode ter a necessidade de ocultar essa variável do editor.
E para isso utilizamos o comando: [HideInInspector], acima, ou antes da variável pública que precisa ser ocultada.
Adicionando pequenas explicações sobre a variável:
Quanto maior o projeto, mais variáveis serão criadas e é comum até mesmo esquecer o que determinada variável faz.
Mas podemos adicionar pequenos textos descritivos que informam a função da variável, ao passar o mouse por cima.
E para isso utilizamos o comando: [Tooltip (“ Texto…”) ], acima da variável que você queira descrever.
E assim sempre que passar o mouse por cima, uma breve descrição será mostrada.
Transformar variáveis numéricas em Slider:
Existem variáveis numéricas que normalmente alteramos pelo inspector, por precisarem de ajustes durante a gameplay.
E essas variáveis podem ser transformadas em um slider, definindo um valor mínimo e máximo para elas.
E para isso usamos o comando: [ Range ( -10f, 10f ) ], antes ou acima da variável, deixando ela mais intuitiva.
Cria um campo maior para uma String:
Para variáveis strings também existe a possibilidade de personalização, através dos PropertyAtributes.
Pois, podemos ter a necessidade de escrever pequenos textos nelas, em um sistema de dialogo, por exemplo.
E para isso usamos o comando: [TextArea], deixando um campo maior para a digitação de textos mais longos.
Dar um espaço maior entre os Tópicos:
Caso seu script tenha muitas funções e vários tópicos, pode acabar ficar tudo muito amontoado.
E nessa caso você poderia dar um espaço entre os tópicos, melhorando a visualização dos mesmos.
E para isso pode ser usado o comando: [Space], que fará pular uma linha entre blocos de variáveis.
Como dito antes essas dicas não são necessariamente obrigatórias, mas trazem muita organização ao seu projeto.
E podem ajudar até mesmo ao trabalhar em equipes onde tenham pessoas que não saibam programar.
Mas que também necessitem manipular seu game através do inspector, um Level Designer, por exemplo.
Seja o primeiro a comentar.