Minicurso Unity 3D básico - Game Developers Brasil



18/5/2011Fonte: Jennifer de Sousa Freitas – GameDevelopers Brasilcenter245745046672506681470Em parceria com:#GDBMinicurso Unity 3D básicoConteúdo TOC \o "1-3" \h \z \u 1. Bom, o que é a Unity? PAGEREF _Toc293492814 \h 31.Aprendendo a Interface PAGEREF _Toc293492815 \h 4Primeira navega??o PAGEREF _Toc293492816 \h 4Project View (Vis?o do Projeto) PAGEREF _Toc293492817 \h 4Hierarchy View (Vis?o da Hierarquia) PAGEREF _Toc293492818 \h 6Parenting(Paterniza??o) PAGEREF _Toc293492819 \h 6ToolBar (Barra de Ferramentas) PAGEREF _Toc293492820 \h 7Scene View PAGEREF _Toc293492821 \h 7Navega??o da Scene View PAGEREF _Toc293492822 \h 8Posicionando GameObjects PAGEREF _Toc293492823 \h 9Control Bar(Barra de controle) do Scene View PAGEREF _Toc293492824 \h 9Game View (Vis?o do Jogo) PAGEREF _Toc293492825 \h 10Play Mode (Modo de execu??o) PAGEREF _Toc293492826 \h 10Inspector(Inspetor) PAGEREF _Toc293492827 \h 11Prefabs PAGEREF _Toc293492828 \h 16Outras Views PAGEREF _Toc293492829 \h 162.Fluxo de trabalho dos Assets. PAGEREF _Toc293492830 \h 17Criar o Asset Bruto PAGEREF _Toc293492831 \h 17Importar PAGEREF _Toc293492832 \h 17Import Settings PAGEREF _Toc293492833 \h 17Adicionando um Asset à cena PAGEREF _Toc293492834 \h 17Colocando Assets diferentes juntos PAGEREF _Toc293492835 \h 17Criando um Prefab PAGEREF _Toc293492836 \h 17Alterando Assets PAGEREF _Toc293492837 \h 18Opcional – Adicionando rótulos a seus Assets PAGEREF _Toc293492838 \h 18Notas: PAGEREF _Toc293492839 \h 183.Criando Scenes PAGEREF _Toc293492840 \h 19Instanciando Prefabs PAGEREF _Toc293492841 \h 19Adicionando Components e Scripts PAGEREF _Toc293492842 \h 19Colocando GameObjects PAGEREF _Toc293492843 \h 19Trabalhando com C?meras PAGEREF _Toc293492844 \h 19Lights PAGEREF _Toc293492845 \h 194.GameObjects PAGEREF _Toc293492846 \h 20O que s?o GameObjects PAGEREF _Toc293492847 \h 20O Relacionamento GameObject-Component PAGEREF _Toc293492848 \h 20O Component Transform PAGEREF _Toc293492849 \h 20Outros Components PAGEREF _Toc293492850 \h 21Usando Components PAGEREF _Toc293492851 \h 21Adicionando Components PAGEREF _Toc293492852 \h 22Editando Components PAGEREF _Toc293492853 \h 23Testando Propriedades PAGEREF _Toc293492854 \h 24Removendo Components PAGEREF _Toc293492855 \h 25O relacionamento Component-Script PAGEREF _Toc293492856 \h 25Usando Scripts PAGEREF _Toc293492857 \h 25Criando novos Scripts PAGEREF _Toc293492858 \h 25Anexando Scripts a GameObjects PAGEREF _Toc293492859 \h 26Manipulando do GameObject PAGEREF _Toc293492860 \h 28O poder das variáveis PAGEREF _Toc293492861 \h 28Acessando outros Components PAGEREF _Toc293492862 \h 29Para onde ir a partir daqui PAGEREF _Toc293492863 \h 305.Publicando Builds(Constru??es) PAGEREF _Toc293492864 \h 316.Conclus?o PAGEREF _Toc293492865 \h 321. Bom, o que é a Unity?A Unity 3D é um motor de jogos (game engine) que possibilita o desenvolvimento de jogos. Assim como toda game engine ou 3D engine, ela facilita o desenvolvimento de jogos pelo fato de o desenvolvedor n?o precisar programar diretamente para DirectX ou OpenGL, pois ela já faz isso para você.A Unity pode fazer jogos para produtos da Apple (Mac, IPhone, IPod, IPad), da Microsoft (Xbox, Windows), da Google (Celulares com Android), da Sony (Playstation 3), da Nintendo (Wii) e para Navegadores Web (Internet Explorer, Mozilla Firefox, Google Chrome, Opera e Safari).Além dessa portabilidade, a Unity possui uma grande quantidade de ferramentas e é muito fácil de trabalhar com ela, pois além de ser visual(n?o apenas baseada em código como a Irrlicht, por exemplo) a interface é bastante amigável. Ela possui uma ferramenta de script baseada no Mono (ferramenta para desenvolver e executar aplica??es .NET cliente e servidor em diferentes plataformas), possibilitando a programa??o em C#, Javascript e Python. A Unity também permite a cria??o de Shaders com?a?linguagem?SharderLab,Cg?da?NVidia, GLSL para o OpenGL e trabalha também com Shader Mode. O?subsistema?de?simula??o?física?é?o?PhysX,?também?da?NVidia. Ela usa também bibliotecas Direct X, Open GL para renderiza??o 3D e OpenAL para áudio.Outro ponto forte da Unity é a importa??o de arquivos. Ela importa em vários formatos, tanto 2D quanto 3D o que exclui o trabalho de ter que exportar alguma arte antes de importar na Unity. Ela aceita os arquivos dos seguintes programas:Blender: .blend Autodesk 3DS Max: .maxAutodesk Maya: .mb or .maMaxon CINEMA 4D: .c4dCheetah3D: .jasLuxology Modo 3D: .lxo *a partir do modo 501NewTek LightWave: é necessário exportar para .fbx utilizando o plugin para exportar para fbx do LightWave.Unity também lê arquivos .FBX, .dae, .3DS, .dxf e .obj. também aceita o .collada. Para arquivos de textura (arquivos 2D) ele aceita os formatos: PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT.A?Unity3D?além dessas características é free apesar de ter a vers?o Pro que é um pre?o n?o t?o fora da realidade.?Aprendendo a InterfacePrimeira navega??oVamos come?ar aprendendo a interface da Unity. Se você n?o tiver aberto a Unity ainda, você pode encontra-la dentro de Iniciar Programas Unity no Windows, ou Aplica??es Unity no Mac. O Editor da Unity irá aparecer. N?o tenha pressa para examinar a interface do Editor da Unity e se familiarizar com ela. A Janela Principal do Editor é composta de várias abas chamadas de Views(Vis?es). Há vários tipos de Views na Unity, cada uma com um propósito específico.Project View (Vis?o do Projeto)Todo projeto Unity contém uma pasta de Assets (ativos). Os conteúdos dessa pasta s?o apresentados no Project View. Este é onde você armazena todos os Assets que comp?e seu jogo, como cenas, scripts, modelos 3D, texturas, arquivos de áudio e Prefabs (Pré-fabricados). Se você clicar com o bot?o direito em qualquer Asset no Project View, você pode escolher Reveal in Explorer – Mostrar no Explorer (Reveal in Finder – Mostrar no Localizador no Mac) para realmente ver o asset mesmo em seu sistema de arquivos.PS: Você nunca deve mover os assets do projeto através do Sistema Operacional, uma vez que irá quebrar todos os metadados associados com o asset. Sempre use o Project View para organizar seus assets.Para adicionar Assets para seu projeto, você pode arrastar qualquer arquivo de seu sistema operacional para dentro do Project View, ou usar Assets Import New Asset (Ativos Importar Novo Ativo). Seu Asset agora está pronto para ser utilizado em seu jogo. Scenes (cenas) também s?o armazenados no Project View. Pense nelas como níveis individuais. Por exemplo, a Islands Scene (cena da Ilha) é carregada por padr?o quando a Unity é executada da primeira vez. Para criar uma nova Scene, use Control – Ctrl– +N (Command+N no Mac). Para salvar a scene corrente dentro do Project View, use Control – Ctrl– +S (Command+S no Mac).Alguns Assets do jogo precisam ser criados de dentro da Unity. Para fazer isso, use a drop-down (caixa suspensa) Create(Criar), ou bot?o direito Create.A caixa suspensa CreateIsso irá permitir que você adicione Scripts, Prefabs, ou Folders(pastas) para manter seu projeto organizado. Você pode renomear qualquer Asset/Folder pressionando F2 no Windows, ou Enter no Mac, ou com dois cliques espa?ados no nome do Asset. Se você segurar a tecla Alt enquanto você expande ou contrai algum diretório, todos os subdiretórios também ser?o expandidos ou contraídos.Hierarchy View (Vis?o da Hierarquia)A Hierarchy contém todo GameObject (Objeto de jogo) na Scene corrente. Alguns desses s?o inst?ncias diretas de arquivos de Assets como modelos 3D, e outros s?o inst?ncias de Prefabs – objetos customizados que ir?o compor muito do seu jogo. Você pode selecionar e paternizar objetos na Hierarchy. Como objetos s?o adicionados e removidos da Scene, eles ir?o aparecer e desaparecer da Hierachy também.Parenting(Paterniza??o)Unity utiliza um conceito chamado Parenting. Para tornar um GameObject filho de outro, arraste o filho desejado sobre o pai desejado na Hierarchy. O filho irá herdar o movimento e a rota??o de seu pai. Você pode agora expandir e contrair o pai para ver seus filhos na Hierarchy sem afetar seu jogo.Dois objetos sem PaiUm objeto Paternizado a outroToolBar (Barra de Ferramentas)A Barra de Ferramentas consiste em cinco controles básicos. Cada um refere-se a diferentes partes do Editor. Ferramentas de Transforma??o: usadas com a Scene View. Alternador de Gizmo de Transforma??o: afeta a tela no Scene View. Bot?es Play/Pause/Step: utilizados com a Game View (Vis?o do jogo). Caixa suspensa de camadas: controla quais objetos s?o mostrados na Scene View. Caixa suspensa de Layout: Controles dispostos em todas as Views.Scene ViewThe Scene ViewA Scene View é sua caixa de areia interativa. Você irá utilizar a Scene View para selecionar e posicionar os ambientes, o jogador, as c?meras, inimigos, e todos os outros GameObjects. Manobra e manipula??o de objetos dentro da Scene View s?o algumas das fun??es mais importantes da Unity, ent?o é importante estar apto a fazê-los rapidamente.Navega??o da Scene ViewAqui está um breve resumo dos fundamentos de navega??o da Scene View.Segure o bot?o direito do mouse para entrar no modo Flythrough(Aéreo). Isso transforma seu mouse e as teclas WASD (mais Q e E para cima e para baixo) em navega??o rápida da vis?o de primeira pessoa.Selecione qualquer GameObject e pressione a tecla F. Isso irá centralizar o ponto piv? (encontro dos eixos x, y, z no centro do objeto) na Scene View.Utilize as teclas de setas para mover em torno do plano X/Z.Segure Alt e clique e arraste para girar a c?mera em torno do piv? corrente.Segure Alt e clique e arraste com o bot?o do meio para arrastar a Scene View em torno da c?mera.Segure Alt e clique e arraste com o bot?o direito para zoom na Scene View. ? o mesmo que rolar a roda do mouse.Você pode também achar utilidade na Hand Tool(Ferramenta M?o) (atalho Q), especialmente se você estiver usando um mouse de um bot?o. Com a Hand Tool está selecionada, Clique e arraste para arrastar em volta da c?mera. Segure Alt e clique e arraste para girar a c?mera em torno do piv? corrente. Segure Control – Ctrl (Command no Mac) e clique e arraste para zoom da c?mera.No canto superior direito do Scene View é o Scene Gizmo. Este mostra a atual orienta??o da c?mera da Scene, e permite que você modifique rapidamente o ?ngulo de vis?o.Você pode clicar em qualquer um dos bra?os para encaixar a c?mera da Scene para aquela dire??o e mudar ela para o Isometric Mode (Modo Isométrico). Enquanto estiver no Isometric Mode, você pode clicar e arrastar com o bot?o direito para girar, e Alt + clicar e arrastar para deslocar. Para sair desse modo, clique no meio do Scene Gizmo. Você pode também utilizar Shift+Clicar no meio do Scene Gizmo a qualquer momento para alternar para o Isometric Mode.Posicionando GameObjectsAqui está um breve resumo dos fundamentos de posicionar GameObjects.Quando você construir seus jogos, você irá colocar muitos objetos diferentes em seu game world(mundo do jogo). Para fazer isso, utilize as Transform Tools na barra de ferramentas para mudar de posi??o, rotacionar e dimensionar GameObjects individuais. Cada um tem um Gizmo correspondente que irá aparecer em torno do GameObject selecionado na Scene View. Você pode usar o mouse e manipular qualquer eixo do Gizmo para alterar o componente de Transforma??o do GameObject, ou você pode digitar os valores diretamente dentro dos campos numéricos do componente de transforma??o no Inspector (Inspetor).Control Bar(Barra de controle) do Scene ViewA barra de controle do Scene View permite que você veja a Scene em vários modos de vis?o – Textured (Texturizado), Wireframe (exibindo os polígonos dos modelos 3D), RGB (Cores RGB), Overdraw (Super desenhado), e muitos outros. Ela também irá permitir que você veja (e ou?a) em jogo, a ilumina??o, os elementos do jogo e som na Scene View.Game View (Vis?o do Jogo)O Game View é renderizado a partir da c?mera do seu jogo. ? a representa??o do seu jogo final, o jogo publicado. Você irá precisar usar uma ou mais c?meras para controlar o que o jogador realmente está vendo quando eles est?o jogando seu jogo. Para falar mais sobre c?meras, ver o capítulo de c?meras.Play Mode (Modo de execu??o)Use os bot?es na barra de ferramentas para controlar o editor Play Mode e veja como seu jogo publicado irá executar. Enquanto estiver no Play mode, algumas mudan?as você pode fazer temporariamente, e ser?o reiniciadas quando você sair do Play mode. O Editor UI irá escurecer para lembrar você disso.Barra de controle Game ViewA primeira caixa suspensa da barra de controle Game View é a Aspect drop-down (caixa suspensa de Aspecto). Aqui você for?a a propor??o da janela Game View para diferentes valores. Ele pode ser usado para testar como seu jogo irá ser exibido em monitores de diferentes propor??es.Mais a direita é o alternador Maximize on Play (Maximizar durante o jogo). Enquanto estiver habilitado, o Game View irá maximizar de 100% da sua janela do Editor para uma visualiza??o legal em tela cheia quando você entrar no Play mode.Continuando a direita é o alternador Gizmos. Enquanto estiver habilitado, todos os Gizmos que aparecem na Scene View ir?o também ser desenhados no Game View. Isso inclui Gizmos desenhados usando qualquer uma das fun??es das classes de Gizmo.Finalmente nós temos o bot?o Stats(Estatísticas). Esse mostra a janela de estatísticas da renderiza??o que é muito útil para otimizar a performance dos gráficos.Estatísticas da Game View de seu jogoInspector(Inspetor)Jogos na Unity s?o feitos de múltiplos GameObjects que contém meshes (malhas), scripts, sounds (sons), ou outro elemento gráfico como Ligths(Luzes). O Inspector mostra informa??es detalhadas sobre o seu GameObject selecionado no momento, incluindo todos os Components (Componentes) anexados a ele e suas propriedades. Aqui, você pode mudar a funcionalidade dos GameObjects na sua Scene. Você pode mais sobre relacionamento GameObject-Component, e é muito importante saber.Qualquer propriedade que é mostrada no Inspector pode ser diretamente modificada. Mesmo variáveis de scripts podem ser modificadas sem altera??o do próprio script. Você pode usar o Inspector para mudar variáveis em tempo de execu??o para experimentar e encontrar a jogabilidade ‘mágica’ do seu jogo. Em um script, se você define uma variável pública de um tipo de objeto (como GameObject ou Transform), você pode arrastar e soltar um GameObject ou Prefab dentro do Inspector para fazer a associa??o.Clique na interroga??o do lado de qualquer nome de componente no Inspector para carregar sua página de referência. Adicionar Componentes a partir do menu ComponentVocê pode clicar no ícone da engrenagem pequena (ou bot?o direito no nome do componte) para apresentar um menu de contexto para componente específico.O Inspector irá também mostrar todo Import Settings (configura??o de Importa??o) para o arquivo Asset selecionado.Clique em Apply (Aplicar) para reimportar seu Asset.Utilize a caixa suspensa Layer (Camada) para associar uma camada de renderiza??o para o GameObject. Utilize a caixa suspensa Tag para associar uma etiqueta a esse GameObject.PrefabsSe você tiver um Prefab selecionado, alguns bot?es adicionais estar?o disponíveis no Inspector. Para mais informa??es sobre Prefabs, vá até o capítulo de Prefabs.Outras ViewsAs Views descritas acima aborda os conceitos básicos da Unity. As outras Views da Unity ser?o mostradas em capítulos separados.Fluxo de trabalho dos Assets.Aqui nós vamos explicar passo a passo como usar um Asset com a Unity. Esses passos s?o gerais e s?o apenas como uma vis?o geral de a??es básicas.Criar o Asset BrutoUse qualquer pacote de modelagem 3D suportado pela Unity (descritos no primeiro capítulo dessa apostila). Por exemplo, você utilizará o 3D Max. Trabalhe com o Asset até você estar pronto para salvar.ImportarQuando você salva um Asset inicialmente, você poderia salvar ele normalmente na pasta Assets na Pasta do seu projeto. Quando você abre o projeto Unity, o Asset será detectado e importado dentro do projeto. Quando você olhar na Project View, você verá o Asset localizado lá, exatamente onde você o salvou. Por favor, note que a Unity usa o exportador FBX fornecido pelo seu pacote de modelagem para converter seus modelos para o formato FBX. Você precisará ter o exportador FBX de seu pacote de modelagem disponível para Unity utilizar. Alternativamente, você pode exportar como FBX de sua aplica??o e salvar na pasta Projects.Import SettingsSe você selecionar o Asset na Project View as Import Settings (Configura??es de Importa??o) para esse Asset ir?o aparecer no Inspector. As op??es que ser?o mostradas ir?o mudar baseadas no tipo de Asset que está selecionado.Adicionando um Asset à cenaSimplesmente clique e arraste o mesh (malha) do Project View para a Hierarchy ou Scene View para adicionar ele a Scene. Quando você arrasta o mesh para a Scene, você está criando um GameObject (Objeto de Jogo) que tem um Mesh Renderer Component (Componente de Renderiza??o da Malha). Se você estiver trabalhando com uma textura ou um arquivo de som, você terá que adicionar ele a um GameObject que já existe na Scene ou no Projeto.Colocando Assets diferentes juntosAqui está uma breve descri??o do relacionamento entre os Assets mais comuns.Uma textura é aplicada a um Material.Um material é aplicado a um GameObject (com um componente de Renderiza??o da Malha).Uma Anima??o é aplicada a um GameObject (com um componente de Anima??o).Um arquivo de som é aplicado a um GameObject (com um Audio Source (Fonte de áudio)).Criando um PrefabPrefabs s?o uma cole??o de GameObjects e Components que podem ser reutilizados em suas Scenes. Muitos objetos idênticos podem ser criados a partir de um único Prefab, chamado instancing (inst?ncia). Pegue árvores como exemplo. Criando um Prefab de árvore, permitirá que você instancie muitas árvores idênticas e colocar elas em sua Scene. Porque as árvores est?o todas ligadas ao Prefab, qualquer mudan?a que for feita no Prefab, automaticamente será aplicado em todas as inst?ncias de árvores. Ent?o, se você deseja mudar o mesh, o material, ou qualquer outra coisa, basta você fazer a mudan?a apenas no Prefab e todas as outras árvores herdar?o a mudan?a. Você também pode fazer mudan?as em uma inst?ncia, e escolher GameObject -> Apply changes to Prefab no menu principal. Isto pode te poupar muito tempo durante a configura??o e altera??o dos Assets.Quando você tem um GameObject que contém múltiplos Components e uma Hierarchy de GameObjects filhos, você pode fazer um Prefab de GameObject de nível superior (ou root – raiz), e reutilizar o conjunto completo de GameObjects.Para realmente criar um Prefab a partir de um GameObject da sua Scene, primeiro crie um novo Prefab em seu Project View. Nomeie o novo Prefab como você desejar. Ent?o, clique no GameObject na Scene que você deseja transformar em Prefab. Arraste ele até o novo Prefab, e você poderá ver o texto do nome dos GameObjects mudar para azul. Você tem agora um Prefab reutilizável.Alterando AssetsVocê importou, instanciou e ligou seu Asset a um Prefab. Agora, quando você quiser editar seu Asset fonte, apenas dê duplo clique nele a partir do Project View. A aplica??o adequada irá iniciar, e você poderá fazer qualquer mudan?a que você quiser. Quando você estiver terminado de alterar ele, apenas o salve. Ent?o, quando você alternar para a Unity, a altera??o será detectada, e o Asset será reimportado. A liga??o do asset com o Prefab também será mantida. Assim, o efeito que você verá é que seu Prefab será alterado. Isso é tudo que você precisa saber sobre altera??o de Assets. Apenas abra ele e salve.Opcional – Adicionando rótulos a seus Assets? sempre uma boa idéia adicionar rótulos a seus Assets se você deseja manter todos os seus assets organizados, com isso você pode procurar pelos rótulos adicionados a cada asset no campo de pesquisa no Project View, ou no Object Selector.Passos para adicionar um rótulo a seu AssetSelecione o asset que você deseja adicionar o rótulo a ele (A partir da Project View)No Inspector clique no ícone “Add Label (Adicionar Rótulo) – – se você n?o tiver nenhum rótulo associado a aquele Asset.Se você tiver um rótulo associado a um Asset ent?o apenas clique onde o rótulo está.Comece escrevendo seus rótulos.Notas: Você pode ter mais de um rótulo para um para qualquer Asset.Para separar/criar rótulos, apenas pressione espa?o ou enter quando estiver escrevendo o nome do label do Asset.Criando ScenesAs Scenes contém os objetos de seu jogo. Elas podem ser usadas para criar um menu principal, fases individuais, e qualquer outra coisa. Pense em cada um arquivo Scene como um único nível (fase). Em cada Scene, você irá colocar seus ambientes, obstáculos e decora??es, essencialmente desenhar e construir seu jogo em peda?os.Instanciando PrefabsUtilize o método descrito no capítulo anterior para criar um Prefab. Uma vez que você criou um Prefab, você pode rápida e facilmente fazer cópias do Prefab, chamadas de uma Inst?ncia. Para criar uma inst?ncia de qualquer Prefab, arraste o Prefab a partir do Project View para a Hierarchy ou Scene View. Agora você tem uma única inst?ncia de seu Prefab para posicionar e ajustar como você desejar.Adicionando Components e ScriptsQuando você tem um Prefab ou qualquer GameObject em destaque, você pode adicionar funcionalidades adicionais a ele através do uso de Components. Scripts s?o um tipo de Component. Para adicionar um Component, apenas destaque seu GameObject e selecione um Component a partir do menu Component. Você verá ent?o o Component aparecer na Inspector do GameObject. Scripts est?o contidos também no menu Component por padr?o.Se ao adicionar um Component quebrar a conex?o do GameObject com o Prefab, você pode sempre utilizar GameObject Apply Changes to Prefab (Aplicar altera??es ao Prefab) do menu para restabelecer a conex?o.Colocando GameObjectsUma vez que seu GameObject está na Scene, você pode usar as Transform Tools (Ferramentas de Transforma??o) para posicionar ele onde quer que você queira. Adicionalmente, você pode utilizar os valores Transform no Inspector para um ajuste fino de posicionamento e rota??o.Trabalhando com C?merasAs C?meras s?o os olhos do seu jogo. Tudo que o jogador verá quando estiver jogando é através de uma ou mais c?meras. Você pode posicionar, girar, e adicionar um pai as c?meras assim como qualquer outro GameObject. Uma c?mera é apenas um GameObject com um Component de C?mera anexado a ele. Portanto ele pode fazer qualquer coisa que um GameObject normal pode fazer, e ent?o algumas fun??es específicas de c?mera também. Há também alguns scripts de c?mera úteis que s?o instalados com o Pacote Standard Assets (Assets Padr?o) quando você cria um novo projeto. Você pode encontra-los em Components Camera-Control do menu.LightsExceto em alguns poucos casos, você sempre precisará adicionar Lights(Luzes) a sua Scene. Há três diferentes tipos de Lights, e todas elas comportam um pouco diferente umas das outras. O que importa é que elas adicionem a atmosfera e o ambiente ao seu jogo. Ilumina??es diferentes podem mudar completamente o humor do seu jogo, e a utiliza??o de Lights efetivamente será um assunto importante para aprender. GameObjectsGameObjects s?o os objetos mais importantes na Unity. ? muito importante entender o que um GameObject é, e como ele pode ser usado. Este capítulo vai explicar tudo isso para você.O que s?o GameObjectsCada objeto no seu jogo é um GameObject. No entanto, GameObjects n?o fazem nada sozinhos. Eles precisam de propriedades especiais antes que eles possam se tornar um personagem, um ambiente, ou um efeito especial. Mas cada um desses objetos faz muitas coisas diferentes. Se cada objeto é um GameObject, como podemos diferenciar um objeto de power-up (adicionar poder) interativo de uma sala de estática? O que torna esses GameObjects diferentes uns dos outros?A resposta a esta pergunta é que GameObjects s?o recipientes. Eles s?o caixas vazias que pode conter diferentes pe?as que comp?em uma ilha com lightmap (mapa de luz) ou um carro com dire??o física. Assim para realmente compreender GameObjects, você tem que entender essas pe?as; elas s?o chamadas de Components (Componentes). Dependendo do tipo de objeto que você deseja criar, você irá adicionar diferentes combina??es de Components para o GameObject. Pense em um GameObject como uma panela vazia, e componentes como diferentes ingredientes que comp?em a sua receita de jogabilidade. Você também pode fazer seus próprios Components usando Scripts.O Relacionamento GameObject-ComponentConforme descrito anteriormente, um GameObject contém Components. Vamos explorar essa rela??o discutindo um GameObject e seu Component mais comum - o Component Transform (Transforma??o). Com qualquer Scene aberta na Unity, criar um novo GameObject (usando Shift-Control-N no Windows ou Shift-Command-N no Mac), selecione-o e dê uma olhada no Inspector.O Inspector de um GameObject vazioObserve que um GameObject vazio ainda contém um nome, uma Tag (marca), e uma Layer (camada). Cada GameObject também contém um Component Transform.O Component Transform? impossível criar um GameObject na Unity, sem um Component Transform. O Component Transform é um dos componentes mais importantes, uma vez que todas as propriedades de transforma??o do GameObject s?o ativadas pelo uso deste Component. Ele define a posi??o, rota??o e escala do GameObject no mundo do jogo/Scene View. Se um GameObject n?o tem um Component Transform, ele n?o seria nada mais do que algumas informa??es na memória do computador. Ele efetivamente n?o existiria no mundo.O Component Transform também permite um conceito chamado Paternidade, que é utilizado pelo do Unity Editor e é uma parte critica do trabalho com GameObjects.Outros ComponentsO Component Transform costuma ser fundamental a todos os GameObjects, de modo que cada GameObject tem um. Mas GameObjects podem conter outros componentes também.A C?mera principal, adicionada a cada Scene por padr?o.Dando uma olhada no GameObject Main Camera (C?mera principal), podemos ver que ele contém uma cole??o de diferentes Components. Especificamente, um Component Camera, um GUILayer (Camada de interface com usuário), uma Flare Layer (camada de reflexo), e um Audio Listener (ouvinte de áudio). Todos esses componentes fornecem funcionalidades adicionais para o GameObject. Sem eles, n?o haveria nada de renderiza??o dos gráficos do jogo para a pessoa jogar! Rigidbodies (Corpos Rigidos), Colliders (colisores), Particles (partículas) e Audio (áudio) s?o todos os diferentes Components (ou combina??es dos mesmos) que?podem?ser adicionados a qualquer GameObject dado.Usando ComponentsOs Components s?o as porcas e parafusos de objetos e comportamentos em um jogo. Eles s?o as pe?as funcionais de cada GameObject. O GameObject é um recipiente para muitos Components diferentes. Por padr?o, todos os GameObjects automaticamente têm um Component Transform. Isso ocorre porque o Transform determina onde o GameObject está localizado, e como ele é girado e redimensionado. Sem um Component Transform, o GameObject n?o teria um lugar no mundo. Tente criar um GameObject vazio agora como um exemplo. Clique no menu GameObject Create Empty (Criar Vazio). Selecione o GameObject novo, e olhe para o Inspector.Até mesmo GameObjects vazios tem um Component TransformLembre-se que você sempre pode usar o Inspector para ver quais os Components est?o ligados ao GameObject selecionado. Como Components s?o adicionados e removidos, o Inspector vai sempre mostrar-lhe quais est?o anexados no momento. Você vai usar o Inspector para alterar todas as propriedades de qualquer componente (incluindo scripts).Adicionando ComponentsVocê pode adicionar Components ao GameObject selecionado através do menu de Components. Vamos tentar isso agora adicionando um Rigidbody ao GameObject vazio que acabamos de criar. Selecione-o e escolha ComponentPhysicsRigidbody (Componente FísicaCorpo Rigido) no menu. Quando você o fizer, você vai ver as propriedades do Rigidbody aparecem no Inspector. Se você pressionar Play enquanto o GameObject vazio ainda está selecionado, você pode ter uma pequena surpresa. Experimente e observe como o Rigidbody tem funcionalidade para o GameObject vazio. (O Component y do GameObject come?a a diminuir. Isso ocorre porque o engine física na Unity está fazendo o GameObject cair por causa da gravidade).Um?GameObject?vazio?com?um?Componente?Rigidbody?anexadoVocê pode anexar qualquer número ou combina??o de componentes a um GameObject único. Alguns Components trabalham melhor em combina??o com outros. Por exemplo, o Rigidbody funciona com qualquer Collider. O Rigidbody controla a transforma??o através da engine física NVIDIA PhysX, e o Collider permite que o RigidBody colida e interaja com outros colisores. Um outro exemplo de combina??es de Components é um Particle System (Sistema de partículas). Eles usam um Particle Emitter (Emissor de partículas), Particle Animator (Animador de Partículas) e um Particle Renderer (Renderizador de partículas) para criar um grupo de partículas em movimento.Se você quiser saber mais sobre como usar um Component específico, você pode ler sobre qualquer um deles na Component Reference (Referência de Componentes) - . Você também pode acessar a página de referência para um Componente de Unity clicando no pequeno (?) no cabe?alho do Component no Inspector.Editando ComponentsUm dos grandes aspectos dos componentes é a flexibilidade. Quando você anexar um componente a um GameObject, existem diferentes valores ou propriedades no Componente que podem ser ajustados no editor, durante a constru??o de um jogo, ou por scripts durante a execu??o do jogo. Existem dois principais tipos de propriedades: Valores e Referências.Olhe a imagem abaixo. ? um GameObject vazio, com um Audio Source (fonte de áudio). Todos os valores da fonte de áudio no Inspector s?o os valores padr?o.Este Componente contém uma única propriedade Reference e sete propriedades Value. Audio Clip é a propriedade Reference. Quando esta Audio Source (fonte de áudio) come?a a tocar, ele tentará reproduzir o arquivo de áudio que é referenciado na propriedade Audio Clip. Se nenhuma referência é feita, ocorrerá um erro porque n?o há nenhum áudio a ser tocado. Você deve fazer referência ao arquivo dentro do Inspector. Isso é t?o fácil como arrastar um arquivo de áudio do Project View para a propriedade Reference ou usando o Seletor de objeto.Agora,?um?arquivo de?efeito sonoro?é?referenciado na?propriedade?Audio?Clip.Os componentes podem incluir referências para qualquer outro tipo de Component, GameObjects, ou Asset. O propriedades restantes no Audio Clip s?o todas as propriedades Value. Estes podem ser ajustados diretamente no Inspector. As propriedades Value sobre o Audio Clip s?o todas alternáveis: valores numéricos, os campos drop-down, mas as propriedades de valor também podem ser textos, cores, curvas, e outros tipos.Testando PropriedadesEnquanto seu jogo está em modo de jogo, você está livre para alterar as propriedades no Inspetor de qualquer GameObject. Por exemplo, você pode querer experimentar com diferentes alturas de salto. Se você criar uma propriedade altura de salto em um script, você pode entrar em modo de jogo, alterar o valor e pressionar o bot?o de salto para ver o que acontece. Ent?o, sem sair do Play Mode você pode alterá-lo novamente e ver os resultados dentro de segundos. Quando você sair do modo de jogo, suas propriedades voltar?o aos valores pré-Play Mode, para você n?o perder nenhum trabalho. Esse fluxo de trabalho lhe dá um poder incrível para experimentar, ajustar e aperfei?oar o seu jogo sem investir muito tempo em ciclos de itera??o. Experimente-o com qualquer propriedade em Play Mode.Removendo ComponentsSe você quiser remover um componente, op??o - ou bot?o direito do mouse no seu cabe?alho no Inspector e escolha Remover Componente. Ou você pode clicar no ícone das op??es ao lado do ? no cabe?alho do componente. Todos os valores da propriedade ser?o perdidos e isto n?o pode ser desfeito, portanto, tenha certeza absoluta de que deseja remover o componente antes de o fazer.O relacionamento Component-ScriptQuando você cria um script e anexa-o a um GameObject, o script aparece no Inspector do GameObject apenas como um componente. Isso ocorre porque os scripts se tornam componentes quando eles s?o salvos - um script é apenas um tipo específico de Componente. Em termos técnicos, um script compila como um tipo de Componente, e é tratado como qualquer outro componente da engine Unity. Ent?o, basicamente, um script é um Componente que você está criando para você mesmo. Você irá definir os seus membros para serem expostos no Inspector, e ele irá executar qualquer funcionalidade que você escreveu.Usando ScriptsEsta é uma breve introdu??o sobre como criar e utilizar scripts em um projeto. Scripts dentro da Unity s?o feitos escrevendo simples scripts de comportamento em JavaScript, C #, ou Boo (Python). Você pode usar uma ou todas as linguagens de script em um único projeto, n?o há nenhuma penalidade por usar mais de um. Criando novos ScriptsAo contrário de outros Assets, como mesh(malhas) ou textures (texturas), arquivos de script podem ser criados a partir de dentro da Unity. Para criar um novo script, abrir AssetsCreateJavaScript (ou AssetsCreateC Sharp Script ou AssetsCreateBoo Script) no menu principal. Isso irá criar um novo script chamado NewBehaviourScript e colocá-lo na pasta selecionada no Project View. Se nenhuma pasta estiver selecionada no Project View, o script será criado na raiz.Você pode editar o script clicando duas vezes sobre ele no Project View. Isso iniciará seu editor padr?o selecionado nas preferências da Unity. Você faz todo o seu script em um editor de texto externo, e n?o diretamente na Unity. Para definir o editor de script padr?o, alterar o item drop-down em UnityPreferencesExternal Script. Estes s?o os conteúdos de um novo script de comportamento, vazio:function Update () {} Um script novo e vazio n?o faz muito por conta própria, ent?o vamos adicionar alguma funcionalidade. Altere o script para ler o seguinte:function Update () { print("Hello World");} Quando executado, esse código irá imprimir "Hello World" para o console. Mas n?o há nada que faz com que o código seja executado ainda. Temos que anexar o script a um GameObject ativo na Scene antes de ele ser executado.Anexando Scripts a GameObjectsSalve o Script acima e crie um novo objeto na Scene selecionando GameObject Create Other Cube. Isso irá criar um novo GameObject chamado “Cube”(Cubo) na Scene atual. Agora arraste o Script do Project View para o Cubo (na Scene ou na Hierarchy View, n?o importa) Você também pode selecionar o cubo e escolher ComponentScriptsNew Behaviour Script. Qualquer um desses métodos v?o anexar o Script ao Cubo. Todo Script que você criar vai aparecer no menu ComponentsScripts. Se você tiver mudado o nome do seu Script, você verá aquele nome ent?o.Se você selecionar o Cubo e olhar para o Inspector, você verá que o seu Script está visível agora. Isso significa que ele foi anexado.Pressione Play para testar sua cria??o. Você deveria ver o texto “Hello World” aparecendo ## dos bot?es Play/Pause/Step. Saia do Play Mode quando você ver isso. Manipulando do GameObjectUma declara??o print() pode ser muito útil ao depurar o script, mas n?o manipula o GameObject ao qual o Script é anexado. Vamos mudar o script para adicionar algumas funcionalidades:function Update () { transform.Rotate(0, 5*Time.deltaTime, 0);} Se você é novo em fazer Scripts, está tudo bem se isso parece confuso. Estes s?o os conceitos importantes para compreender:function Update () {} é um recipiente de código que a Unity executa várias vezes por segundo (uma vez por quadro).transform é uma referência para o Component Transform do GameObjectRotate() é?uma?fun??o?contida?no Component Transform.Os números?entre?as vírgulas?representam os?graus?de?rota??o?em torno de cada?eixo?do?espa?o 3D:?X,?Y?e?Z.Time.deltaTime?é?um?membro?da?classe?Time?que?nivela?o movimento ao longo?de um segundo,?ent?o?o cubo?vai?girar?na?mesma velocidade, n?o importa?quantos quadros?por?segundo?a sua?máquina?está renderizando.?Portanto,?5?*?Time.deltaTime significa?5?graus por isso em mente, nós podemos ler esse código como “todo frame, gire o Component Transform do GameObject um pequena quantidade que no caso é igual a cinco graus em volta do eixo Y a cada segundo.Você pode acessar muitos Components diferentes da mesma maneira como já acessamos o Transform. Você tem que adicionar componentes ao GameObject usando o menu Component.O poder das variáveisNosso script até agora sempre roda o cubo 5 graus a cada segundo. Podemos querer que ele gire um número diferente de graus por segundo. Poderíamos mudar o número e salvar, mas depois temos que esperar para o script ser recompilado e temos que entrar no modo Play antes de vermos os resultados. Há uma maneira muito mais rápida de fazê-lo. Podemos experimentar a velocidade de rota??o em tempo real durante o modo de jogo, e é fácil de fazer.Em vez de digitar 5 para a fun??o Rotate (), vamos declarar uma variável speed e usar isso na fun??o. Alterar o script com o seguinte código e salvá-lo:var speed = 5.0;function Update () { transform.Rotate(0, speed*Time.deltaTime, 0);}Agora selecione o cubo e olhe para o Inspector. Observe como a nossa variável speed(velocidade) aparece.Esta variável agora pode ser modificada diretamente no Inspector, como renomear um arquivo no gerenciador de arquivos. Selecione-o, pressione Enter e altere o valor. Você também pode usar o bot?o direito ou esquerdo do mouse sobre o valor e arraste o mouse para cima ou para baixo. Você pode alterar a variável, a qualquer momento, mesmo enquanto o jogo está sendo executado.Clique em Play e tente modificar o valor da variável speed. A velocidade de rota??o do cubo irá mudar instantaneamente. Quando você sair do modo de jogo, você verá que suas altera??es ser?o revertidas ao seu valor antes de entrar no modo de jogo. Desta forma, você pode jogar, ajustar e experimentar para encontrar o melhor valor, em seguida, aplicar esse valor permanente.Usando este método de alterar o valor de uma variável no Inspector significa que você pode re-utilizar um script em vários objetos, cada um com um valor variável diferente. Se você anexar o script para vários cubos, e mudar a speed de cada cubo, todos eles v?o girar em velocidades diferentes, apesar de usar o mesmo script.Acessando outros ComponentsAo escrever um componente de script, você pode acessar outros componentes do GameObject de dentro do script.Usando membros GameObjectsVocê pode acessar diretamente qualquer membro da classe GameObject. Se qualquer uma das classes indicadas est?o anexadas ao GameObject como um componente, você pode acessar o componente diretamente através do script, basta digitar o nome do membro. Por exemplo, a digitar Transform é equivalente a gameObject.transform. O gameObject é assumido pelo compilador, a menos que você especificamente referencie um GameObject diferente.Digitando this estará acessando o componente de script que você está escrevendo. Digitando This.gameObject está se referindo ao GameObject que o script está anexado. Você pode acessar o mesmo GameObject simplesmente digitando gameObject. Logicamente, digitando this.transform é o mesmo que digitar Transform. Se você quiser acessar um componente que n?o é incluído como membro GameObject, você tem que usar gameObject.GetComponent ().Há muitos Components que podem ser acessados ??diretamente em qualquer script. Por exemplo, se você quiser acessar a fun??o Translate do componente Transform, você pode escrever apenas transform.Translate () ou gameObject.transform.Translate (). Isso funciona porque todos os scripts est?o ligados a um GameObject. Ent?o, quando você escreve transformar você está implicitamente acessando o Component Transform do GameObject que está ligado ao Script. Para ser mais explícito, você escreve gameObject.transform. N?o há nenhuma vantagem em um método sobre o outro, é tudo uma quest?o de preferência para o escritor.Usando GetComponent()Há muitos componentes que n?o s?o referenciados diretamente como membros da classe GameObject. Ent?o você n?o pode acessá-los implicitamente, você tem que acessá-los explicitamente. Você pode fazer isso chamando o GetComponent ("nome do Component") e armazenar uma referência para o resultado. Isso é muito comum quando você quer fazer uma referência a outro script anexado ao GameObject.Finja que você está escrevendo Script B e quer fazer uma referência a um script A, que é anexado ao mesmo GameObject. Você teria que usar GetComponent () para fazer esta referência. Em Script B, você poderia simplesmente escrever:scriptA = GetComponent("ScriptA");Ent?o você iria conseguir acessar qualquer uma das variáveis do script A ?escrevendo scriptA.variableName no Script B.Para onde ir a partir daquiEssa foi apenas uma breve introdu??o sobre como usar scripts dentro do Editor. Para mais exemplos, veja os Tutorials que vêm com a Unity. Você também deve ler Scripting Overview dentro da Script Reference, que contém uma introdu??o mais completa sobre scripts com a Unity mais indica??es dentro da própria referência para informa??es detalhadas. Se você estiver realmente perdido, n?o deixe de visitar o Unity Answers ou Unity Forums e perguntar lá. Alguém está sempre disposto a ajudar.Publicando Builds(Constru??es)Em qualquer momento enquanto você está criando seu jogo, você pode querer ver como ele parece quando você construir e executar ele fora do editor como um jogo aut?nomo ou no WebPlayer. Essa sess?o irá explicar como acessar as Build Settings(Configura??es de Constru??o) e como criar diferentes Builds de seus jogos.File Build Settings... é o item do menu para acessar a janela de configura??es de Build. Ela mostra uma lista editável de Scenes que ser?o incluídas quando você construir seu jogo.A janela Build SettingsA primeira vez que você ver essa janela em um projeto, ela irá aparecer em vazia. Se você construir seu jogo enquanto essa lista estiver vazia, apenas a Scene aberta no momento será incluída no Build. Se você desejar construir rapidamente uma execu??o de teste com apenas um único arquivo Scene, bastar construir com a lista de Scene vazia.? fácil adicionar arquivos de Scene à lista para builds com mais de uma Scene. Há duas maneiras de adicionar elas. A primeira maneira é clicar no bot?o Add current (Adicionar atual). Você verá a Scene aberta no momento aparecer na lista. A segunda maneira é para adicionar arquivos de Scene é arrastar eles a partir do Project View para a lista.Nesse ponto, observe que cada uma de suas Scenes tem um valor diferente de índice. Scene 0 é a primeira Scene que será carregada quando você construir o jogo. Quando você desejar carregar uma nova Scene, utilize Application.LoadLevel() dentro de seus scripts.Se você tiver adicionado mais de um arquivo de Scene e desejar reorganiza-los simplesmente clique e arraste para cima ou para baixo de outras na lista até que você tenha colocado elas na ordem desejada.Se você deseja remover uma Scene da lista, clique para destacar a Scene e pressione Delete. A Scene irá desaparecer da lista e n?o será incluída no Build.Quando você estiver pronto para publicar seu Build, selecione uma Platform (Plataforma) e assegure que a logo da Unity ao lado da plataforma. Se n?o, ent?o clique no bot?o Switch Platform (Alterar Plataforma) para deixar que a Unity saiba para qual plataforma você quer construir. Finalmente pressione o bot?o Build (Construir). Você poderá selecionar o nome e a localiza??o do jogo usando uma janela de salvar arquivos padr?o. Quando você clicar em Save (Salvar) , Unity irá construir seu jogo prontamente. ? muito simples. Se você n?o tem certeza onde você salvou o jogo construído, considere que a Unity salvou ele dentro da pasta raiz de projetos. Você n?o pode salvar o Build dentro da pasta Assets.Habilitando o checkbox(caixa de sele??o) Debug Build (Depurar Constru??o), qualquer executor aut?nomo irá habilitar a funcionalidade Profiler. Além disso o jogo será construído com símbolos de depura??o, de modo que você pode usar perfis ou ferramentas de depura??o de terceiros.Conclus?oEssa apostila é apenas um resumo do conteúdo encontrado na própria documenta??o da Unity disponível no site: . Vários dos Tópicos citados na apostila e que n?o est?o nela, podem ser encontrados nesse link. A quest?o é que a documenta??o nesse site é em inglês, e o que foi traduzido nessa apostila foram os tópicos Unity Básico e Usando Scripts. Que essa apostila ajude e qualquer outra informa??o que n?o estiver aqui, basta acessar o User Guide no link acima. ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download