
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:
- Modelos - armazena todos os modelos usados no projeto
- Prefabs - armazena todos os modelos de modelo
- Texturas - armazena todas as texturas
- Materiais - armazena todos os materiais
- Scripts - armazena todos os scripts
- Sons - armazena todos os sons
- 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 caracteresOutra 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çãoHabilidade 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 cenaHabilidade # 3 - Trabalhando com apresentação visual
A unidade possui três fontes principais de luz:
- Luz direcional - um análogo do sol
- Point Light - análogo de uma lâmpada
- 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.
A cena sem pós-processamento
Cena de pós-processamentoUPD 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 GizmoHabilidade 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 objetoprivate void OnCollisionEnter(Collision collision) { switch (collision.gameObject.tag) { case "Moneys": Destroy(collision.gameObject);
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.
- Posicione o modelo em coordenadas zero (centro em relação aos eixos)
- Definir Escala para Um
- Remova objetos desnecessários (câmera, fonte de luz)
- Salve o modelo no formato .fbx
- Transferir arquivo para o Unity
- Puxe para as pastas - Modelo para Modelos, Material para Materiais, etc.
- Criar prefab do modelo
- 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) {
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;
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.