Vamos tentar entender melhor o que aparece na tela quando você inicia o Unity pela primeira vez.
Lembre-se de que, se você é novo na interface Unity, esta será uma lição muito importante que pode determinar seu futuro como desenvolvedor Unity.
Você precisará ler este artigo com atenção e aprender as terminologias usadas aqui.
Cada elemento descrito sustenta a operação e a compreensão do Unity 3D.
Aprenderemos o significado de terminologias básicas como:
- Hierarquia
- Cena
- Inspetor
- GameObject
- Componente
- Transformar
Executando o Unity pela primeira vez, você se encontrará diante de uma ferramenta dividida em várias janelas cheias de botões que invocam seu clique, mas que podem ser confusas no início.
Mas não desista, você está diante da mais completa ferramenta de criação de jogos já concebida e em breve terá total controle sobre ela!
O poder da criação ao seu alcance.
Vamos examinar a parte superior da tela.
Existem quatro áreas principais, todas muito importantes:
Hierarquia, Cena, Gamas e Inspetor.
Hierarquia
Esta é a hierarquia de objetos na cena atual.
Todos os objetos nos quais você estará trabalhando aparecerão nesta janela. Os objetos na cena são chamados objetos do jogo (itens do jogo) e estarão todos e sempre listados nesta janela.
Cena
É a janela de trabalho onde aparece a cena atual, é nessa janela que você irá trabalhar e construir a cena do jogo, movendo, dimensionando e posicionando os objetos como quiser.
Gamas
É a janela onde você verá o jogo como ele realmente aparece quando é executado. É uma tela somente de saída (portanto você não pode interagir diretamente com ela), mas dentro dela você poderá ver o resultado do trabalho que você fez até aquele momento.
Inspetor
É o inspetor, ou seja, a janela de inspeção do objeto selecionado. Nesta janela você poderá ver todas as informações sobre o gamaObject selecionado naquele momento, os roteiros a ele ligados e todas as características que possui. Se estiver completamente vazio no momento, é simplesmente porque você não selecionou nenhum objetos do jogo .
No começo já serão dois objetos do jogo fundamental na cena, uma câmera e uma luz.
Como você pode facilmente adivinhar, a câmera representa o ponto de vista, é o olho que enquadra o jogo. O que a câmera vê é o que é exibido na janela Gamas.
O que significa a palavra "Cena"?
Uma cena(s) é um nível de jogo. O mundo do jogo pode consistir em cenas infinitas que serão carregadas conforme necessário. Ou, em alguns casos basta ter duas ou três cenas para um jogo inteiro, isso depende da complexidade do jogo em questão.
NOTA: É importante entender desde já que ao passar de uma cena para outra, todas as objetos do jogo in Hierarquia será destruído e eu serei carregado objetos do jogo da nova cena.
Portanto, eu objetos do jogo eles não são automaticamente permanentes durante todo o jogo, a menos que você especifique para não destruir um objeto específico ao carregar uma nova cena.
O elemento mais importante no desenvolvimento do jogo:
eu jogoObjetos.
Todos os elementos de uma cena são objetos do jogo.
A câmera é um jogoObjeto, a luz é um jogoObjeto, um personagem é um jogoObjeto ecc… eu objetos do jogo diferem entre si de acordo com o componentes que lhes são atribuídos.
Ao selecionar um jogoObjeto, todos nós poderíamos ver componentes presente naquele gameObject intragável na janela inspetor .
por natureza eu objetos do jogo eles são "vazios", ou seja, são apenas "pontos no espaço 3D da cena" que não realizam nenhuma operação específica. O que me faz jogoObjeto funcional eu sou componentes compor (também chamado de "anexado a ele").
Os componentes (componentes) em um gameObject
I componentes (componentes) são outro bloco de construção fundamental no qual todo o desenvolvimento de um videogame no Unity é baseado. São os elementos que "preenchem" um gameObject e atribuem suas características.
Por exemplo, a câmera faz seu trabalho como câmera porque é um jogoObjeto para o qual Componente "Sala" o que torna precisamente, uma câmera. Sem o componente Câmera, isso jogoObjeto não teria as mesmas funções e o mesmo papel no jogo. Uma câmera é assim precisamente porque é um normal jogoObjeto com o componente Câmera.
Para dar outro exemplo, para ter uma esfera 3D dentro da cena teríamos que criar um jogoObjeto com o componentes do “modelo de esfera” nele.
DIVISÃO SOBRE O CÓDIGO DE COMPONENTES. Correndo o risco de "faltar do assunto" com a lição, ainda quero familiarizá-lo com uma das instruções fundamentais que encontraremos no código. GetComponent(); Com esta simples linha de código vamos "pegar" qualquer componente, para que possamos gerenciá-lo. GetComponent(); Teremos "lido" o componente da câmera para que possamos gerenciá-lo como queremos diretamente do código, alterando o zoom da câmera e muitos outros recursos diretamente em tempo de execução, ou seja, enquanto o jogo está sendo executado. |
Qualquer script também é um componente. Por exemplo, um script que faz um personagem se mover é um componentes, um certo VFX atribuído ao jogoObjeto da câmera é um componentesEtc. ..
Todos os gameObjects consistem em vários componentes.
Por exemplo, um personagem que se move pela tela será um jogoObjeto com o componente "modelo de personagem" que o faz aparecer na tela e o script "movimento" para fazê-lo se mover por meio da entrada do jogador.
O componente Transformar
Este "componente" pode ser definido como "especial" porque está presente em todos objetos do jogo, sempre fica acima de todos os componentes e é o único que você não pode excluir de um jogoObjeto.
Como o nome sugere, representa todos os “Transformações 3D” do objeto pretendido como peculiaridades do jogoObjeto no espaço, ou seja, sua escala, sua rotação e sua posição no espaço. Pode ser definido como o componente que identifica este jogoObjeto em sua cena.
Outra parte importante da interface do Unity - o painel Projeto
Na parte inferior da tela do Unity, encontramos uma janela que pode alternar entre Projeto e Aparador através de duas abas. Veremos mais adiante o que é o Console e sua utilidade. Por enquanto, vamos nos concentrar agora no Painel Projeto.
Dentro da janela Projeto encontraremos os arquivos do projeto ou mais comumente chamados de “Assets”.
Um ativo é um "bem", entendido como um "elemento útil" para o desenvolvedor.
Texturas, sons, modelos, scripts, materiais e tudo mais que você for usar em um projeto serão chamados Asset.
Assim como os arquivos em uma janela do Windows, dentro desta janela podemos ver qualquer tipo de arquivo que faça parte do projeto que você pode classificar em pastas e subpastas.
É importante que você mantenha seus arquivos bem organizados por categorias, criando pastas que contenham um determinado tipo de arquivo, para que você possa se orientar facilmente quando quiser encontrar um arquivo específico.
À esquerda do nosso painel Projeto encontramos um pequeno menu de navegação a partir do qual podemos
acessar facilmente os diretórios de nossos arquivos ou favoritos
(Favoritos), pastas que filtram todos os arquivos de uma especificação
categoria. Por exemplo, clicando em "Todos os modelos" eles serão mostrados para nós
todos os modelos que estão atualmente em nosso projeto.
Assim que você iniciar um projeto, você se encontrará com a pasta Asset que sempre estará presente e representará a pasta acima de tudo na qual todos os ativos serão encontrados.
Seria um bom hábito criar imediatamente uma hierarquia que inicialmente contém pelo menos as pastas:
- Texturas
- Scripts
- Materiais
- Texturas
- Taxa de modelo
Então você sabe imediatamente onde criar ou importar arquivos.
Você aprenderá rapidamente que ter muitos arquivos em um projeto não significa que todos farão parte do jogo finalizado. Na verdade, quando construímos o jogo, apenas os arquivos realmente utilizados serão inseridos nas pastas do jogo e não todos os importados para o projeto.
Você vai assimilar bem esse conceito quando perceber que terá um projeto de dezenas de Gb, mas uma compilação final de algumas centenas de Mb (ainda bem!). De fato, pode acontecer que você use "pacotes" baixados da Asset Store, mas faça uso apenas de pequenas partes deles. Somente as partes realmente utilizadas (modelos, texturas, scripts etc.)
Mover dentro da janela Cenas
No canto superior esquerdo há uma pequena barra de navegação com cinco botões. Eles são usados para mover e interagir com objetos dentro da cena (na janela da cena).
Os botões permitem, na ordem da esquerda para a direita:
- Panorâmica da vista
- Mover o objeto selecionado
- Girar o objeto selecionado
- Dimensionar o objeto selecionado
- Deformar a escala do objeto selecionado
- Roda do mouse: é usado para ampliar a visualização da cena.
- Botão esquerdo do mouse: permite selecionar objetos na cena.
- Alt + clique esquerdo: permite que você gire a vista em torno de um ponto.
- Chave certa: se pressionado, habilita o “modo voar”. Neste modo, você pode se mover pela cena usando os botões W, A, S e D, e pode girar a visualização simplesmente movendo o mouse.
- Botão do meio do mouse: Ele permite que você execute a panorâmica da câmera ou mova a visualização sem girá-la. Você pode fazer o mesmo pressionando Ctrl + Alt e use o botão esquerdo do mouse.
- Tecla F: permite que você mova a exibição para um único objeto. Será muito útil quando você quiser se mover rapidamente para um objeto na cena que está muito distante ou fora de sua visão. Você pode fazer a mesma operação com um clique duplo do mouse em um objeto do Hierarquia.
Uma olhada no painel Console
Ao clicar na aba “Console”, passaremos do painel Projeto para aquele… Console!
Como todos os painéis, podemos movê-lo e colocá-lo onde quisermos.
Este painel mostrará todos os erros relativos ao seu projeto (espero que sempre sejam poucos).
Será extremamente útil ao tentar corrigir um bug ou testar se um script funciona corretamente.
Por exemplo, você só precisa escrever o código
Debug.Log("meu texto");
or
print("meu texto");
para ver “meu texto” aparecer magicamente em seu console!
Obviamente não nos importamos em ver um texto que escrevemos no console, veremos a utilidade deste painel nas próximas aulas.
Lembre-se desde já que este painel representa uma interface de saída como a janela do jogo, ou seja, não será possível digitar texto diretamente dentro dela, mas será muito útil como saída do que nos interessa saber durante a execução do nosso jogo.
Quando instalamos o Unity, outro programa integrado ao motor, chamado MonoDevelop (em versões antigas) ou Comunidade do Visual Studio (em versões mais recentes).
Portanto, a partir da versão 2018.1 do Unity, não encontraremos mais MonoDevelop mas o mais profissional Visual Studio.
Comunidade do Visual Studio é a versão gratuita do Visual Studio programa de produção Microsoft, portanto diferente da Unity. O Unity não permite a escrita de código dentro dele, por isso conta com um editor de script como o note Visual Studio. Quando vamos clicar duas vezes em um script dentro Unity, será aberto em Visual Studio.
UNIDADE é um editor que permite a criação, posicionamento, atribuição da parte gráfica, etc… dos objetos do nosso jogo.
Estúdio visual é o editor que permite a programação, ou seja, a escrita do código que fará mover os objetos do nosso jogo.
Para simplificar vamos definir Visual Studio como um editor de script. Ele vem com um editor de texto normal, mas com mais alguns recursos. Lembre-se de que é possível escrever scripts mesmo com o simples bloco de notas do Windows ou qualquer outro editor de texto. A única diferença está nas ajudas que o Visual Studio dá ao desenvolvedor, com conselhos durante a escrita, detecção de erros, verificação de sintaxe, uso de cores para identificar palavras-chave, etc.
O Visual Studio é, portanto, o editor de scripts anexado ao Unity com o qual escreveremos o código do nosso jogo.
Pretese de informação: o que significa “programação”?
Como a própria palavra diz, programar significa preparar algo para o futuro, no nosso caso podemos dizer que vamos tentar "dar instruções ao computador que depois terá de se comportar como nós o mandamos fazer".
Mas lembremos que o computador é um objeto inanimado.
Isso o torna muito diferente do que se fosse, por exemplo, uma pessoa, a quem se poderia simplesmente indicar:
“se chover leve guarda-chuva”. Ou do nosso cachorro, que pode aprender um certo gesto ou palavra que ele interpretará como "vá para a casa do cachorro" e o fará executar a ação de ir à casa do cachorro.
O computador é um objeto, como uma caneta, uma mesa, um ciclomotor, etc. Não é uma máquina inteligente, não existem máquinas inteligentes. Existem apenas máquinas muito rápidas na execução de operações, uma peculiaridade que permite simular um certo tipo de inteligência graças à possibilidade de realizar bilhões de operações em menos de um segundo para que encontre a resposta mais adequada para um determinado solicitação examinando bilhões de respostas possíveis em um milissegundo.
O computador é uma coleção de peças de plástico, cobre e silício. É um carro, como o seu ciclomotor, que se você quiser "comandar" para ir para a frente, você tem que usar o acelerador.
Seu ciclomotor tem sua própria maneira de interagir com você e entender seus comandos, como qualquer outro carro.
Então, para comandar o computador que quando você apertar uma tecla ele vai fazer isso ou aquilo você vai precisar de uma linguagem que ele entenda.
O problema é que a única linguagem que o computador entende é aquela que você não entenderia. É uma linguagem composta de 1's e 0's que é muito complicada e consumiria muito tempo se tentássemos escrevê-la à mão.
Como o computador é uma máquina, nada pode fazer além de reconhecer o acesso ou o desligamento, precisamente: 1 e 0. O língua binário.
Assim, como o computador tem a particularidade de ser muito rápido, mesmo que sejam necessárias muitas operações, podemos fazer com que ele traduza o que escrevemos em nosso idioma, para o idioma que ele possa entender.
Este procedimento é chamado compilação e é isso que o Unity faz automaticamente quando dizemos para ele criar o Construa do nosso jogo.
Construa literalmente significa “construir” ou “construir”.
Mas cuidado para não se confundir.
O primeiro de criar uma construção vai demorar muito porque é o que você faz no final do desenvolvimento ou quando quiser fazer algum teste criando um executável que você pode testar em outros computadores ou repassar para outras pessoas.
Uma compilação é a versão final do nosso jogo, o conjunto de pastas e arquivos, incluindo arquivos .exe a serem executados para iniciar o jogo.
"Build" é a operação final que nos permite criar o jogo que será executável pelo usuário.
Durante o desenvolvimento do nosso jogo, podemos testá-lo a qualquer momento sem necessariamente ter que criar um build a cada teste, diretamente no editor Unity, simplesmente pressionando a tecla PLAY presente no centro da barra superior do Unity.
Escreveremos em linguagem C# no Visual Studio e depois testaremos nosso trabalho pressionando o botão Play no Unity.
O texto que escreveremos no Visual Studio é comumente chamado código e o arquivo do nosso projeto no qual estaremos trabalhando se chamará fonte ou mais simplesmente scripts.
Um script é basicamente um arquivo com a extensão .cs (que significa C Sharp) que pode ser atribuído a um jogoObjeto (objeto do jogo) para fazê-lo fazer as coisas que queremos que ele faça.
O arquivo executável que "nascerá" da compilação será o programa compilado, nosso jogo, pronto para ser executado por qualquer pessoa em seu PC/console/celular/Tablet etc...
Portanto, será suficiente realizar a operação de compilação no Unity para transformar nosso trabalho na versão executável e reproduzível pelo usuário. Isso só acontecerá no final do nosso trabalho, quando terminarmos o desenvolvimento do jogo ou para fazer testes pontuais durante o desenvolvimento.
compilação portanto, queremos dizer aquele processo pelo qual um programa, escrito em uma linguagem de programação, é traduzido em instruções que podem ser executadas pelo processador.
Então, se escrevêssemos esta frase em um script: “Pressionar a tecla de seta para a direita faz com que o modelo se mova para a direita” e atribuí-lo a um jogoObjeto, deve funcionar...
Pena, porém, que o Unity não entenda italiano e (felizmente) apenas incorpore uma gramática menos rica do que qualquer língua falada. Todas as linguagens de programação utilizam como base a língua inglesa e por isso todas as instruções devem ser escritas em inglês. Não se preocupe se você não fala inglês, se fosse italiano ou ostrogodo, não mudaria nada, não seria mais fácil ou mais difícil.
O que deveríamos escrever em inglês seria: "Se clicar com o botão direito pressionado, a coordenada X do objeto aumenta no total" .
Isso seria melhor, mas nada mudará e, mais uma vez, nosso compilador não saberá como traduzir o que escrevemos para uma linguagem compreensível pela máquina e nos enviará um erro. Conforme mencionado, você precisa usar uma sintaxe adequada composta de colchetes e palavras-chave.
A sintaxe correta seria IF(clique com o botão direito=pressionado){model.x=model.x+tot;}. Ou seja, se o botão direito do mouse for pressionado, ele aumenta a coordenada x do modelo, de forma a fazê-lo se mover.
Estamos quase lá, mas ainda não é a sintaxe correta.
Sempre que quisermos dizer ao computador para fazer algo somente quando uma determinada condição ocorrer (no nosso caso o botão direito for pressionado), nos depararemos com uma palavrinha que é certamente a instrução mais importante de todas, seja qual for o idioma que usamos: SE. Bem, a condição. Desde que o botão direito seja pressionado, faça isso ou aquilo. Em inglês: IF.
Como você deve ter notado, existem alguns "sinais de igual" entre parênteses, chaves e um ponto e vírgula que não temos certeza do que estão fazendo. Esses símbolos são necessários para uma sintaxe correta, como se estivéssemos escrevendo uma frase em italiano.
Esta é a sintaxe da linguagem C# (pronuncia-se C Sharp) que Unity e Visual Studio irão entender e finalmente poderão compilar, transformando nossas instruções da linguagem C# na linguagem de máquina que criará nosso programa/jogo.
Se sobre um tema italiano escrevemos a frase "talvez:amanhã!vou]ao(mar..." nossa professora daria um bom 2 em gramática (e talvez nos mandasse ver um especialista), porque o que escrevemos em italiano não está correto, mesmo que o significado seja entendido, existem alguns erros gramaticais, portanto está errado . A mesma coisa quando escrevemos em uma linguagem de programação, a sintaxe deve ser a correta, não podemos inventá-la senão um erro será destacado e a compilação será interrompida.
if ( condição ) { faça isso; }
Aqui estamos nós, esta é finalmente a gramática correta da língua que estamos falando, a C#.
- Em primeiro lugar a educação IF que verifica a condição, ou seja, se o que escrevemos dentro dos colchetes seja verdadeiro ou falso.
- Acabou de fechar o parêntese do condição encontramos uma chaveta que se abre. Dentro das chaves está o código que queremos executar quando o condição acabará por ser verdade.
- A operação termina com um ponto e vírgula que sempre determina o final da operação que queremos que o computador faça.
Como você deve ter entendido a simbologia é muito importante, será necessário usar símbolos como igual, menor, maior, etc…
Alguns exemplos para se familiarizar…
Por exemplo, se quiséssemos realizar uma operação apenas quando a pontuação de um jogador for 1000, escreveríamos:
if(pontuação == 1000){ ...faça isso... ;}
se em vez disso quiséssemos fazer a mesma coisa quando a pontuação for igual ou superior a 1000, escreveríamos algo assim:
if(pontuação >= 1000){ ...faça isso... ;}
onde >= significa “igual ou maior”.
Mas por que é usado para verificar a igualdade == e não simplesmente =? Ou seja, por que usar dois símbolos iguais um após o outro? Nós veremos isso em sessão 1.4 em que explico a primeira instrução de controle com mais detalhes, if ed outro. Mas lembre-se de não pular as sessões anteriores!
Conclusões finais
Você está um pouco confuso? É normal. Continue e não desanime.
Não há melhor guia do que a experiência. Fazendo os primeiros testes você começará a entrar na mentalidade certa e verá que terá tudo mais claro.
Lembro que, se você não entendeu alguma coisa, pode facilmente escrever um comentário abaixo de cada lição.