Do caos à ordem, ou "crie uma estrutura de projeto no Unity e não apenas ..."

Ao criar um novo projeto, é tão limpo, compreensível, que não há excesso de lixo ... está vazio. Quanto mais tempo o desenvolvimento ocorre, mais excesso de lixo, pastas obscuras, arquivos aparecem nele; algumas vezes, prefabs de outros projetos podem chegar lá e toda a organização voa para o Tártaro.

Acontece que a organização nunca esteve, o projeto tem três anos, é tarde demais para colocar as coisas em ordem, não é conveniente trabalhar e em geral ...

Bem-vindo ao caos, você está aqui porque:

  • nunca pensei por que você precisa de uma estrutura de projeto no Unity
  • seus projetos têm uma bagunça eterna e você quer se livrar dela
  • em busca de novas formas de organizar
  • perdeu a esperança de colocar as coisas em ordem em seu projeto

Cedo ou tarde, você tomará sua decisão e ela será mais adequada para você. Só posso ajudar na busca e oferecer suas opções. Veremos alguns exemplos, analisamos e elaboramos a solução mais apropriada. Também falaremos sobre estrutura, hierarquia e nomes próprios, e como a ordem ajuda a acelerar as coisas.



Bem-vindo ao gato.

Obrigado a todos que leram meu material anterior. Foram os comentários abaixo dele que me levaram a escrever este artigo. Mais informativo e útil, com uma introdução romântica, mas com conteúdo prático. Hoje falaremos sobre coisas bastante óbvias, se houver algo a acrescentar, fique à vontade para escrever e oferecer suas próprias opções.
Direto ao ponto.
Por que precisamos de uma estrutura? - hora. Economizamos muito tempo na depuração, adicionando novos recursos, arquivos, limpeza, desde que nossa organização seja clara e conveniente para nós, desde que seja. Nomes de arquivos corretos, pedidos, tags e outros pequenos truques podem economizar tempo.
A rede possui materiais semelhantes suficientes com exemplos, mas não há muitas explicações sobre "por que isso é assim". Descreverei as soluções que me uso e como elas são convenientes especificamente para mim. Não acho que trarei algo novo, mas a organização certa é o começo do início de qualquer projeto.

"Como isso é feito"


Tomemos, por exemplo, coletores para o meio ambiente. Que objetos e aviões nós temos?

  • sexo
  • as paredes
  • obstáculos (caixas, barris, pedras, etc.)
  • o teto

Na hierarquia da cena, podemos colocar tudo isso em um objeto de jogo , mas será inconveniente pesquisar.

Portanto, criaremos um objeto de jogo separado para colidir pisos, paredes, teto e obstáculos.

Como exemplo, o nível do jogo



Se tivermos mais de 10 filhos, recomendo escrever uma tag, isso simplifica a pesquisa. Novamente, colididores, se estamos falando de 2D, então borda, polígono, caixa, círculo é usado e cada um pode ser um colisor de avião ou obstáculo. Pode ser chamado de "coll_edge_N" ou "coll_e_N" porque os coletores de parede possuem um objeto de parede pai (que, por sua vez, tem um objeto pai de Colliders ), surge a questão de escrever uma tag do plano "coll_wall_edge_N" , para uma pesquisa simplificada, quando o número de objetos é grande, você economize muito tempo.

Temos algo parecido.





Organizando pastas no Unity

O projeto também possui regras bastante claras.

Ou seja:

  • deve ficar claro onde está
  • é claro onde adicionar novos arquivos e fontes
  • estrutura adaptável e confortável
  • a estrutura não é muito complexa e não é esmagada

Claro, você pode jogar qualquer coisa e em qualquer lugar sem pensar na organização.

Assim



Você pode fazer algo mais organizado com uma estrutura clara.

Algo assim



Agora vamos ver o que é necessário, o que não é.

É muito conveniente dividir o projeto em ativos internos e ativos externos , isso é uma vantagem.
Em ativos externos , temos todos os ativos de terceiros e nada mais.
Há uma pasta de cena separada na qual todas as cenas estão localizadas.
A pasta de scripts também é separada, é mais conveniente.
A pasta mais interessante para nós são ativos internos
Tudo sobre a parte visível do nosso jogo está lá.



Quais pastas são necessárias lá?

  • Pasta principal de pré-fabricados para todos os pré-fabricados
  • Texturas / Sprites para quem é mais conveniente e depende de um projeto 2D ou 3D
  • Materiais materiais aqui e tudo está claro
  • Shaders da mesma forma, poucas perguntas
  • Animações
  • Vfx
  • O som aqui é uma organização simples na própria pasta e a separação de sons em BGM, Impact FX, etc.

Como artista de efeitos visuais e artista de animação 2D / 3D, abordarei mais detalhadamente a organização dessas pastas específicas.

Para a animação da unidade, precisamos controlar o animador e o clipe de animação , existem vários clipes de animação, por isso é mais conveniente colocá-los em uma pasta. Além disso, você precisa de uma pasta para a própria unidade.

Será assim.


É conveniente
Agora sobre VFX

Na pasta com vfx, você precisa das texturas , materiais e, opcionalmente, prefabs . É mais conveniente para um artista de efeitos visuais trabalhar em suas pastas e não mexer no projeto inteiro, mas para manter a ordem em seu jardim. Texturas para efeitos são sempre texturas. Os materiais para efeitos têm configurações diferentes, de aditivo a alfa, e às vezes uma textura vai para vários materiais, se a pasta de texturas estiver próxima, a pesquisa será mais fácil. Se você estiver escrevendo shaders, puxar texturas da pasta VFX é mais conveniente; também é mais conveniente e lógico colocar os materiais do shader acabado no VFX.
Por que preciso de uma pasta Lixeira?

Freqüentemente, você precisa excluir algo, não o fato de poder fazê-lo e tudo correr bem, geralmente algo se perde e, se você não é o programador líder do projeto, pode fazê-lo. Também é necessário testar um recurso / ideia e não o fato de que ele criará raízes e é geralmente necessário. É para isso que serve a pasta Lixeira , todos os testes, tudo o que precisa ser excluído ou tudo o que você não deseja enviar com o commit atual é melhor colocar aqui e registrar ignorar para o gita.

Organizando uma hierarquia no Unity

Um pouco mais alto foi um exemplo sobre colisores. Esta regra obedece a tudo. Em nosso projeto, aplicamos essa solução.



Acabamos de adicionar "--- nome do capítulo ---" este é um objeto vazio que carrega apenas o nome. Parece ser uma coisa inútil e supérflua, mas às vezes simplifica a busca e a compreensão da hierarquia no palco. Uma solução tão simples permite acelerar a pesquisa visual várias vezes. Por exemplo, temos um objeto de oponentes, podemos complicar e criar vários objetos filhos para cada tipo de inimigo e separar os chefes, além de criar uma etiqueta para cada inimigo. E podemos fazer um objeto mãe para os oponentes voando, designar o símbolo ^ , $ forte e o chefe designar como % . Para colisores, essa solução não é muito conveniente, mas para oponentes e sua separação visual na hierarquia - muito bem.

Organização pelo exemplo da coluna

Quando falamos de animação 2D ou 3D, a importância da organização e dos nomes vai para um nível diferente. Você pode recorrer ao mocap de animação e não se preocupar com a organização, mas apenas faça os movimentos necessários no estúdio e faça a final ali, infelizmente, isso nem sempre acontece. Há muitas coisas que precisam ser modificadas manualmente, mesmo ao capturar movimento, mas não estamos falando sobre isso. Como corrigir todos os movimentos, determinar o ponto desejado, osso, quando houver mais de 20? Uma pessoa simples com 5 ossos não será difícil de organizar e entender as conexões, e agora adicione 10 dedos a ele, é mais difícil, certo?

As regras são as mesmas, mas na animação existem dependências e ossos filho que simplificam a organização. Além disso, para a percepção visual, é usada uma mudança na cor dos ossos. Há sempre um osso-chave ao qual outros ossos estão ligados, a esses ossos ainda existem ossos e assim por diante até o fim. Muitas vezes chamamos isso de simplesmente Raiz , os quadris ou o tronco vão mais longe, a mão esquerda ou direita do tronco, e assim por diante. Com os nomes, é mais fácil entender o que e onde.

E aqui está um exemplo de destaque, ajuda no trabalho (por exemplo, Dragon Bones )



Regras principais


  • clareza de nomes
  • conveniência
  • abordagem razoável

Conclusão


Exemplos são apenas meus exemplos. Apenas uma coisa é óbvia e certa - nomes, estrutura, ordem, cada um na sua, mas compreensível para as pessoas com quem você trabalha, ninguém irá recolher seus escombros. As grandes empresas geralmente são mais exigentes com a organização; quanto mais cedo você aprender a manter a ordem, mais fácil será para você no futuro.
Não vou contratar uma campanha de limpeza, dei uma vassoura, use-a.


Comentários



Leopotam
"ExternalAssets" é o caminho para lugar nenhum, se você precisar não apenas adicionar ativos, mas também atualizá-los. A solução mais correta e simples é isolar os ativos locais do projeto (no artigo é "InternalAssets") e armazenar ativos externos conforme foram elaborados pelos autores - idealmente, em pastas separadas no nível da pasta "InternalAssets". Nesse caso, a atualização se torna fácil e simples, você não precisa classificar por pastas personalizadas o que pode vir na atualização e o que não existia antes. Além disso, existem pastas especiais que não podem ser movidas e que só podem estar na raiz (Gizmos, Plugins / Android, Plugins / iOS, etc.).

Source: https://habr.com/ru/post/pt439114/


All Articles