Destaque
- Gerar link
- X
- Outros aplicativos
Marcadores
Unity - Organização de Projetos
Hierarchy
Conforme uma scene se torna cada vez maior e com mais objetos nela é importante mantê-la organizada, para facilitar o trabalho, é recomendável que sejam usados emptys como folders e subfolders, para que seja fácil encontrar objetos específicos em cena.
Project
Assim como os objetos em cena, também é preciso manter organizado as suas pastas, assim você passa menos tempo procurando coisas e mais tempo fazendo coisas.
É importante manter tudo dividido em categorias. um Exemplo de organização abaixo
- Assets
- Scripts
- Managers
- Scriptables
- Systems
- Units
- Utilities
- Audio
- Musics
- Sounds
- Prefabs
- Resources
- Models
- Materials
- Textures
- Scriptable Objects
- Scene
- Spriter
Game Managers
Não é muito recomendado usar métodos, como dizer... aqueles que tem Find no nome 😬 eles são ruins para a performance do jogo se usados frequentemente.
O ideal é usar um Game Manager, mas qual a diferença ? eu ainda vou ter que usar um "Find()" para ter a referencia do Game Manager né ? NÃO, não vai.
Game Managers seguem o padrão Singleton a ideia é basicamente que ele tenha apenas uma única instância, o que facilita que ele seja "encontrado".
Essa aqui é a estrutura básica de um Singleton |
O principal está na linha 8, que é a variável Instance, essa variável é static, logo ela pertence a classe e não a instância, em outras palavras, ela seria compartilhada entre todas as instancias dessa classe.
Logo no Awake é feita uma verificação se a variável é nula, e se for a instancia é setada como Instance, senão, aparece um aviso no console, também poderia ter um destroy ali... (a ideia disso é verificar se ela é única)
Exemplo de como Acessar um Singleton |
Agora vamos falar sobre a função de um Game Manager.
Managers, significam gerentes, logo a ideia é que eles gerenciem, monitorem outros objetos. a ideia é que Game Managers, cuidem de um grupo de objetos similares.
Por Exemplo ao criar um jogo de Tower Defense, teríamos inimigos vindo em ondas. então eu poderia ter ao menos 2 managers partindo disso, os chamarei de WaveManager e EnemyManager.
O WaveManager cuidaria das ondas de inimigos, eu poderia ter uma List de uma classe que eu mesmo criaria chamada Wave (ela armazenaria coisas como quantidade de inimigos da onda, o nível deles, o tipo de inimigo, etc), o Manager seria responsável por iniciar as ondas e verificar se elas terminaram para poder começar a próxima, mas para poder saber se uma onda terminou eu precisaria saber quantos inimigos ainda estão vivos, e ai que entraria o EnemyManager ele teria uma List de todos os inimigos vivos (e montada sem usar "Find" o inimigo poderia adicionar a si mesmo nessa List quando fosse instanciado), e eles também poderia armazenar outras informações como como o inimigo morreu ? quem sabe para futuramente ser exibido em uma tela de estatísticas...
Game Modes
Esse aqui não é exatamente um padrão, mas o livro que citei nas referencias recomenda e a ideia é boa.
Consiste basicamente de uma Classe que checa as condições de vitória e de derrota do jogo, é algo bem simples, é basicamente usar as informações dos Game Managers para saber se você ganhou ou perdeu o jogo e após isso carregar a tela de vitória ou derrota por exemplo.
Um exemplo disso usando um TowerDefense, nesse caso eu checaria, a quantidade de hordas restantes e a quantidade de inimigos restante e se ambos fossem menor ou igual a 0, isso indicaria que eu ganhei.
Mas se a vida da minha base fosse menor ou igual a 0, isso indicaria que perdi.
A vantagem de usar esse GameMode é que ele é meio que independente. por exemplo eu estou fazendo um jogo em que o objetivo é matar todos os inimigos eu tenho um EnemyManager. eu poderia simplesmente fazer com que ele cuidasse da logica de vitória e derrota, mas ao fazer isso caso eu quisesse adicionar um outro modo de jogo ao meu jogo eu não poderia usar o EnemyManager no outro modo por que meio que poderia entrar em conflito com o objetivo do novo modo de jogo, que poderia ser por exemplo manter um NPC vivo enquanto você o escolta de um ponto a outro.
Observações:
Existem inúmeras formas de se organizar um projeto, não existe uma forma correta, e recomendo que assista o vídeo abaixo nas referências, ele explica varias outras coisas úteis.
Referências:
Vídeo: Unity Architecture for Noobs - Game Structure
Livro: Hands-On Unity 2021 Game Development
Comentários
Postar um comentário