Habilidades básicas da unidade



Bom dia, querido Khabarovsk!

Todo desenvolvedor quer criar seu próprio jogo mais rapidamente, mas como fazê-lo? Este artigo discute as habilidades básicas para reduzir o tempo de desenvolvimento em um ambiente Unity.

Habilidade 1 - Trabalhar com a estrutura do projeto


Para manter a ordem no projeto, você precisa entender sua estrutura. Pode ser representado da seguinte maneira:

  1. Modelos - armazena todos os modelos usados ​​no projeto
  2. Prefabs - armazena todos os modelos de modelo
  3. Texturas - armazena todas as texturas
  4. Materiais - armazena todos os materiais
  5. Scripts - armazena todos os scripts
  6. Sons - armazena todos os sons
  7. Animações - armazena todas as animações

Se você tiver objetos complexos, por exemplo, um caractere, uma pasta separada será criada para ele, onde a estrutura acima será repetida.


Estrutura da pasta de caracteres

Outra abordagem seria criar as pastas descritas acima e colocar as partes do objeto em cada pasta, ou seja, a seguinte estrutura será usada para animação de caracteres.


Estrutura de pastas de animação

Habilidade 2 - Trabalhar com uma hierarquia de objetos em cena


Para simplificar o trabalho com conjuntos de objetos idênticos, eles podem ser combinados em grupos nos quais um objeto vazio atua como pai.

Isso ajudará a desligar facilmente a luz em todo o local ou dentro de casa. Descubra a localização de todos os objetos.

Cada elemento é chamado em relação ao que é, ao final é adicionado um postfix do objeto pai. Por exemplo, uma barra de ouro em uma caverna será chamada “goldBar_cv1”, em que cv1 significa caverna1 e uma árvore na floresta “tree_frt1”, em que frt1 significa floresta1. Para o postfix, são utilizadas a primeira letra da palavra, a primeira letra da segunda sílaba e a última letra da palavra.


Um exemplo de uma hierarquia de objetos em uma cena

Habilidade # 3 - Trabalhando com apresentação visual


A unidade possui três fontes principais de luz:

  1. Luz direcional - um análogo do sol
  2. Point Light - análogo de uma lâmpada
  3. Spotlight - análogo de uma lanterna

Se houver luz, deve haver uma fonte de luz. Por exemplo, em uma caverna, não pode ser luz se o personagem não tiver uma tocha (para uma tocha, a luz do ponto é adequada).

Use Pós-processamento para aplicar efeitos.

imagem
A cena sem pós-processamento

imagem
Cena de pós-processamento

UPD do senso comum :

Além das fontes de luz apresentadas visualmente, também existem configurações globais de luz: uma guia na parte superior da janela , o item Iluminação , o subitem Configurações . Lá você pode, por exemplo, aumentar a iluminação do ambiente, instalar uma caixa de sky, adicionar neblina. Na verdade, é aqui que você precisa procurar se fez a pergunta "excluiu todas as fontes de luz, mas é a mesma luz no palco e durante o dia". A propósito, você pode entrar nessas configurações já enquanto o jogo está rodando no editor, para poder ver imediatamente as alterações em tempo real. No entanto, depois de fechar o modo de jogo, as configurações retornarão ao estado em que estavam antes do início do teste do jogo. Então você precisa subir nesta janela novamente e ajustar os valores. Um detalhe útil - se, por exemplo, você deseja alterar a cor da iluminação (Cor ambiente no grupo Iluminação do ambiente), em seguida, no painel com a paleta, preste atenção ao item Hexadecimal - o número da cor atual é indicado na janela, você pode copiá-lo e colá-lo no mesmo campo posteriormente quando o modo de jogo está desativado. O mesmo truque é útil para ajustar a cor do nevoeiro e assim por diante.

Da mesma forma, durante a execução no modo de jogo, você pode alterar alguns parâmetros dos objetos por meio do editor - os valores dos scripts variáveis ​​movidos para a zona de visibilidade, ativar / desativar a renderização da malha do objeto e assim por diante. O principal é não se deixar levar para não quebrar alguma coisa. Após o modo de jogo ser desativado, os valores alterados serão restaurados. Isso não se aplica a alguns elementos individuais, por exemplo, se você editou a textura do terreno no modo de jogo incluído, suas alterações serão salvas.


Habilidade 4 - Trabalhar com a câmera


Precisa encontrar um objeto no palco? Clique 2 vezes no nome do objeto na hierarquia.

Quer voar pelo palco de uma pessoa? Mantenha pressionado o RMB e mova-se com as teclas WASD, aceleração de deslocamento.

Quer ver a cena de diferentes ângulos? Aproveite o Gizmos (Gizmos).


Localização de Gizmo

Habilidade 5 - Trabalhar com objetos


Deseja adicionar um personagem à cena? Adicione os componentes RigidBody e CapsuleCollaider. RigidBody informa ao mecanismo que a física de estado sólido deve ser aplicada a esse objeto.

Deseja verificar a colisão de um personagem com um objeto? Adicione o componente MeshCollaider ao objeto e, no script de caractere da função OnCollisionEnter, verifique a marca do objeto que o caractere encontrou.

Um exemplo da implementação da verificação de colisão de um personagem com um objeto
private void OnCollisionEnter(Collision collision) { switch (collision.gameObject.tag) { case "Moneys": Destroy(collision.gameObject); // Do something break; case "TrapSpikes": hitPoints -= 5.5; break; } } 



UPD do senso comum :
Nem sempre é necessário que um personagem use um corpo rígido; os métodos de gerenciamento podem ser diferentes. Mas um colisor para um personagem será quase sempre necessário, a menos que você calcule colisões de uma maneira mais complicada. O Unity também possui vários controladores / coletores específicos - é melhor ler a documentação para entendê-los com mais detalhes. Mas é melhor começar com exemplos simples no YouTube.

Quanto aos objetos que o personagem encontra. O Mesh Collider geralmente deve ser pendurado nos objetos cuja forma complexa é importante, de uma maneira ou de outra, para você levar em consideração a colisão. Se for apenas um botão, é melhor conviver com coletores mais simples, como o Box Collider. Além disso, pode ser necessário fazer uma grade de colisão invisível mais simples para objetos 3D particularmente complexos e pendurar o Mesh Collider nele, e não no próprio objeto visível.

Sobre os coletores de botão, vale lembrar que em seu componente do colisor, é necessário marcar a caixa É acionador para que o script possa manipular o evento click. Um componente de corpo rígido deve ser atribuído a todos os barris, caixas e outros objetos que devem simplesmente reagir fisicamente às colisões e cair sob a influência da gravidade.


Habilidade 6 - Importar modelos


Considere o procedimento usando o exemplo de importação de um modelo do Blender. Supõe-se que você já tenha feito uma digitalização, aplicado uma textura ou materiais selecionados.

  1. Posicione o modelo em coordenadas zero (centro em relação aos eixos)
  2. Definir Escala para Um
  3. Remova objetos desnecessários (câmera, fonte de luz)
  4. Salve o modelo no formato .fbx
  5. Transferir arquivo para o Unity
  6. Puxe para as pastas - Modelo para Modelos, Material para Materiais, etc.
  7. Criar prefab do modelo
  8. Trabalhe mais com pré-fabricados


UPD do senso comum :

Liquidificador


Observe que, se os materiais do liquidificador forem atribuídos ao modelo, eles serão transferidos de forma simplificada e desorganizarão a lista de materiais.
Você não precisa desenvolver nem desenvolver texturas complexas no Blender - uma maneira mais fácil é percorrer todos os elementos do modelo e selecionar o item Dados na janela à direita. Este é um ícone na forma de um triângulo olhando para baixo com três pontos entre os itens Modificadores (chave inglesa) e Material (bola rosa). Nele, clique em + ao lado do gráfico Mapas UV - aparece uma verificação automática com um ícone de bola de xadrez. Isso precisa ser feito para cada elemento do modelo e somente depois exportar. Então, já no Unity, será possível aplicar material com textura de ladrilho a esta peça e, se isso não for feito, o material pintará a peça apenas em uma cor sólida. (Se você deformar o elemento do modelo posteriormente, descarte a varredura e atribua-a novamente para que não seja esticada).

Se o seu modelo consiste em elementos diferentes, já no Unity você pode mover elementos individuais do seu modelo ou desativá-los. Isso pode ser útil em várias situações.

Como texturizar um modelo de maneira simples.


Para iniciantes, algumas texturas de mosaico de 512 a 512 são suficientes.Adicione da mesma maneira que o modelo 3D via Import New Asset (lembre-se de que uma pasta adequada deve ser selecionada). Ao mesmo tempo, à direita, no inspetor, na textura adicionada na janela Padrão , defina o parâmetro Tamanho máximo como 512. E, em seguida, clique em Aplicar . Agora a textura está pronta para adicioná-la ao material ou, digamos, agora pode ser pintada em terrane. Preste atenção ao primeiro ponto - Tipo de textura, agora está no modo padrão, mas quando você precisa carregar um mapa normal, uma imagem para um sprite translúcido e assim por diante, precisará definir a configuração apropriada.
Em seguida, precisamos criar o material. Novamente, vamos ao menu acima - Ativos , a lista suspensa Criar , Material (novamente, não esqueça que o material será criado na pasta selecionada no momento). Você dirige no nome do material e no inspetor abre o item Albedo (até pararmos com outros parâmetros, mas o princípio é semelhante), onde você pesquisa e atribui a textura carregada anteriormente. Nas proximidades, há uma janela colorida que também pode tingir sua textura, além de controles deslizantes de Metal e Suavidade para adicionar brilho ou embotamento. O parâmetro Tamanho do ladrilho também é útil, estão algumas linhas abaixo.
Após a criação do material, você pode agarrá-lo e jogá-lo diretamente no modelo ou em seus elementos, apenas não perca, caso contrário, não pinte o que você precisa.

Não esqueça que a mesma textura pode ser usada em diferentes materiais. Por exemplo, com impurezas de cores diferentes e / ou tamanhos diferentes de ladrilhos.

Prefabs.


Geralmente, a pré-fabricação é feita da seguinte maneira: eles arrastaram o objeto para a cena, depois conectaram seu nome na janela da hierarquia e o arrastaram para a pasta. Aparecerá uma pré-fabricada com base no objeto; no inspetor, a pré-fabricada terá um ícone de cubo azul e será assinada abaixo da tag, Prefab.
No entanto, você não precisa fazer imediatamente tudo pré-fabricado. Você pode jogar o objeto em cena, cloná-lo com copiar e colar e testá-lo assim. Se tudo lhe convier, transfira o objeto para a pré-fabricada; caso contrário, por exemplo, um bug apareceu no modelo, exclua suas cópias da cena, o próprio modelo da pasta, corrija-o no pacote 3D e importe-o novamente.

Você também pode empurrar alguns novos elementos filhos dentro da pré-fabricada no palco. No entanto, eles não se tornarão parte integrante dele, ou seja, não afetarão outras cópias desta pré-fabricada até você clicar no botão Aplicar no inspetor na linha com o nome Prefab.


Habilidade 7 - Implementando Lógica


Evite operações caras. Um exemplo é determinar a distância de um objeto.

Exemplo de operação dispendiosa
 using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform other; void Example() { if (other) { //       //         float dist = Vector3.Distance(other.position, transform.position); print("Distance to other: " + dist); } } } 


Exemplo de implementação mais rápida
 using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform other; public float closeDistance = 5.0f; void Update() { if (other) { Vector3 offset = other.position - transform.position; //     float sqrLen = offset.sqrMagnitude; //    ,     if (sqrLen < closeDistance * closeDistance) { print("The other transform is close to me!"); } } } } 


Leia mais sobre operações caras aqui .

Conclusão


As habilidades acima reduzirão significativamente o tempo durante o desenvolvimento e durante o suporte ao projeto.

Se você acha que alguns tópicos são revelados superficialmente, escreva os comentários sobre eles com mais detalhes.

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


All Articles