unity3d e javascript.docx

26

Click here to load reader

Upload: luan-lopes

Post on 13-Aug-2015

453 views

Category:

Documents


1 download

TRANSCRIPT

TPICO: Artigo para iniciantes em JavaScript na Unity Artigo para iniciantes em JavaScript na Unity 23 Ago 2012 20:24 #111480Ol Pessoal! Bom, frequentemente, via MSN, muitas pessoas me pedem um bom guia para programar na Unity, ento eu decidi traduzir o guia do usurio tonyd, do frum americano da Unity3D. Ento, todos os crditos por esse guia vo para tonyd, eu s estou o traduzindo e fazendo eventuais adaptaes aqui e ali. J entrei em contato com tonyd e ele me concedeu permisso para postar essa traduo. Voc pode encontrar o tpico original clicando aqui! O motivo para eu estar traduzindo esse guia, por que ele me ajudou muito quando eu estava iniciando em programao dentro da Unity, e grande parte da minha limitada habilidade em programao eu devo a esse guia, por que sempre bom ter por onde comear! A partir daqui, fiquem ento com a traduo do guia(ainda em andamento). No se assustem com o tamanho do artigo, eu garanto que vale a pena e espero que a minha traduo tenha ficado compreensvel! Guia para iniciantes em JavaScript na Unity

GutoThomas_

OFFLINE Solid Postagens: 32

Esta minha introduo a scripting com a verso da Unity de Javascript, tambm conhecida como UnityScript. No requer nenhuma experincia com programao. Se voc tiver alguma experincia com programao, voc pode querer pular para a parte de funes e classes. Se voc for um expert, provavelmente vai querer pular esse tpico completamente, por que ir se

sentir ofendido em como eu simplifico alguns conceitos. Se voc quiser executar os cdigos de exemplos, dever estar familiarizado com a interface da Unity e saber como criar um script e anex-lo a um GameObject. Veja os links abaixo: Introduo a Interface da Unity (em Ingls). Introduo a scripting com Unity leia a seo entitulada Our first script, e Attaching the script. [] Textos em vermelho se aplicam apenas para usurio da Unity Mobile(No sei se isso ainda vlido).

VARIVEIS

Pense em uma varivel como sendo um container, que armazena alguma coisa. Voc pode optar por nomear uma varivel do jeito que desejar desde que no contenha espaos, inicie com uma letra (preferencialmente minscula), contenha apenas letras, nmeros ou underlines e no seja uma palavra reservada.var caixa;

A est! voc declarou sua primeira varivel! Se voc est se perguntando sobre o ponto-e-vrgula no final: declaraes (comandos), em JavaScript, devem ser finalizados com ponto-e-vrgula. Programando para iPhone? Se voc declarar uma varivel sem anexar a ela um valor, voc dever especificar de que tipo essa varivel . Neste caso, uma String. Tipos comuns incluem String, int, float, boolean e Array. Note que necessrio diferenciar letras maisculas de minsculas (string e String so coisas diferentes, devido a essa diferena na capitalizao da primeira letra).var caixa: String;

Claro que nossa caixa est vazia, ento vamos armazenar algo nela adicionando a seguinte linha:caixa = abacaxi; // No tpico original ele usa ma, mas por causa da acentuao, usarei abacaxi como exemplo.

Agora, nossa caixa contm uma string de texto (tipo de varivel) que abacaxi. Perceba que voc pode declarar a sua varivel e, no mesmo comando, dar a ela um valor:var caixa = abacaxi;

Porm, uma vez declarada, voc no pode declarar ela novamente. Voc pode, entretanto, alterar o seu valor. (desde que o novo valor seja do mesmo tipo que o original).caixa = laranja;

Alm de strings de texto, variveis podem armazenar nmeros:var numero = 10;

Isso um inteiro(int), o que significa: sem casas decimais. Mas ns poderamos, tambm, criar um nmero de ponto flutuante (float), que pode conter casas decimais.var meuFloat = 10.5;

Variveis podem ser tambm boleanas. Uma boleana armazena apenas um valor que pode ser verdadeiro ou falso:var fimDeJogo = true;

Vamos falar sobre elas um pouco mais adiante. Perceba que uma varivel normalmente pode conter apenas uma coisa por vez. Mas ns podemos criar uma varivel que contenha mltiplas coisas por vez, criando um Array:

var tortaDeAbacaxi = Array(abacaxi, aucar mascavo, manteiga, massa de torta);

Essa varivel contm tudo que voc precisa para fazer uma torta de abacaxi! Se ns quisssemos ver o contedo de 'tortaDeAbacaxi', poderamos fazer o 'output' dos valores para o console da Unity usando o comando Debug. Adicione esta linha ao cdigo:Debug.Log(tortaDeAbacaxi);

Quando o projeto for executado, o console deve exibir: abacaxi, acucar mascavo, manteiga, massa de torta Para acessar um nico elemento no array(vetor), ns podemos faz-lo atravs de seu ndice (posio no vetor). Isso pode parecer confuso, mas ndices comeam em 0. Ento, o ndice 0 , na verdade, o primeiro elemento no vetor.var tortaDeAbacaxi = Array(abacaxi, acucar mascavo, manteiga, massa de torta); var item1 = tortaDeAbacaxi[0]; Debug.Log(item1);

Voc tambm pode usar ndices em strings. O seguinte cdigo exibe o primeiro caractre de ola, a letra o:var minhaString = ola; Debug.Log(minhaString[0]);

Agora, vamos alterar nossas variveis de maneira diferente. Ns podemos somar variveis:var numero1 = 10; var numero2 = 11; var total = numero1 + numero2;

Debug.Log(total);

Se voc adicionar um int(inteiro) a um float(nmero de ponto flutuante), o resultado se torna um float:var numero1 = 100; var total = numero1 + 1.5; Debug.Log(total);

Obviamente, tambm podemos subtrair, dividir e multiplicar inteiros e floats. Menos bvio, ns tambm podemos somar strings. Isso as junta.var string1 = cidra de; var string2 = ma; var combo = string1 + string2; Debug.Log(combo);

Se ns somarmos um nmero a uma string, o resultado se torna uma string. Tambm podemos multiplicar strings:var saudacao = ola; Debug.Log(saudacao * 3);

Infelizmente, ns no podemos dividir ou subtrair strings. Sempre h um modo de separar strings e remover partes delas, mas este um tpico mais avanado. Vamos encerrar nossa discusso sobre variveis com nmeros que so incrementados, ou seja, mudam de valor atravs de uma constante. Primeiramente, declare uma varivel e d a ela o valor de 1:var numero = 1;

Podemos incrementar valores de vrias maneiras.

numero = numero + 1;

O cdigo acima adiciona 1 para o nosso numero, e ele passa a valer 2. Mas programadores so preguiosos, e decidiram que isso era muito longo. Ento, abreviaram para:numero += 1;

Isto simplesmente a abreviao para numero = numero + 1; Mas, sabe de uma coisa? Programadores preguiosos decidiram que at mesmo isso era longo, e ento abreviaram para:numero++;

Use qual faz mais sentido para voc, todos eles fazem a mesma coisa! Mas perceba que se voc quiser incrementar por um valor diferente de 1, ++ no funcionar. ++ a abreviao para += 1 apenas. Voc pode fazer a mesma coisa com subtrao:numero--;

Mas, para diviso e multiplicao, voc deve usar uma das formas mais longas:numero = numero/2; numero *= 2;

Perceba que um asterisco significa multiplicao, e uma barra significa diviso. DECLARAES IF

Declaraes if so declaraes condicionais. Se uma condio avaliada como verdadeira, faa alguma coisa. Ns podemos fazer comparaes entre dois valores usando dois sinais de igualdade, ==. numero == 10 avaliado como verdadeiro se nosso numero igual a 10, caso contrrio, avaliado como falso. Nota: importante lembrar-se de usar dois sinais de igualdade quando comparar variveis/valores, e um sinal de igualdade quando atribuir um valor a uma varivel! A seguinte linha cria uma varivel e atribui a ela o valor true, avalia se a varivel igual a true, e se for, exibe um texto no console.var jogoIniciado = true; if(jogoIniciado == true) Debug.Log(O jogo foi iniciado!);

O cdigo acima de certa forma redundante, uma vez que nossa varivel jogoIniciado uma boleana. No h razo em verificar se verdadeiro igual a verdadeiro, apenas verifique se verdadeiro.var jogoIniciado = true; if(jogoIniciado) Debug.Log(O jogo foi iniciado!);

Se voc est se perguntando por que eu no coloquei um ponto-e-vrgula depois de if(jogoIniciado), por que, tecnicamente, esta apenas a primeira metade da nossa declarao. Eu poderia ter escrito desta forma:if(jogoIniciado) Debug.Log(O jogo foi iniciado!);

Eu poderia, tambm, ter escrito desta forma:if(jogoIniciado) { Debug.Log(O jogo foi iniciado!); }

As chaves representam um bloco de cdigo, e dizem declarao if para executar tudo entre as chaves... Se a condio for verdadeira! Quando if contm apenas uma declarao para ser executada, as chaves so opcionais. Mas, se ele contiver mais do que uma, voc DEVE usar as chaves. Perceba que ponto-e-vrgula no necessrio depois das chaves.var jogoIniciado = false; if(jogoIniciado == false) { jogoIniciado = true; Debug.Log(Eu acabei de iniciar o jogo!); }

Leia a segunda linha do cdigo acima. Lembra-se daqueles programadores preguiosos? Eles no querem escrever:if(jogoIniciado == false)

Quando eles podem escrever:if(not jogoIniciado)

Mas, sabe de uma coisa? Por que escrever not (no), quando voc pode abreviar isto tambm?if(!jogoIniciado)

Sim, um ponto de exclamao significa no para programadores preguiosos! Voc pode, tambm, combinar isto com uma igualdade, o que significar no igual:var resposta = 1; if(resposta != 42) Debug.Log(Questo incorreta!);

Voc tambm pode verificar por maior que ou menor que:var idade = 18; if(idade > 18) Debug.Log(Velho o bastante); else if(age < 18) Debug.Log(Jailbait); // Algo como chave de cadeia, eu creio else Debug.Log(Exatamente 18.);

Percebeu as palavras reservadas else if e else? Se a primeira declarao condicional falhar(avaliada como falsa), ser ento checada a condio do else if. Se essa falhar, ser checado o prximo else if(se houver outro disponvel). E, finalmente, se todas as condies falharem, ser executada a declarao abaixo de else. Novamente, se if, else if, ou else contiverem mais do que uma declarao, cada bloco de cdigo deve ser separado por chaves. Voc tambm pode avaliar mltiplas condies em uma nica declarao:if(idade >= 18 && sexo == feminino) comprarBebida = true;

Acima, introduzimos maior que ou igual a >= e o operador E, o qual representado por dois caracteres ampersand: &&. Se ambas as condies forem verdadeiras, a declarao ser executada. Se qualquer uma delas for falsa, a declarao no ser executada. Nota: Se voc quiser executar o cdigo acima, lembre-se de criar variveis para idade(int), sexo(String) e comprarBebida(boolean) antes disso.if(engine == Unity || desenvolvedor == amigo) comprarJogo = true;

Acima, ns usamos o operador OU, o qual representado por duas barras verticais: ||. Se qualquer uma das condies for verdadeira, a declarao ser executada. Se ambas forem falsas, a declarao no ser executada. Nota: Se voc quiser executar o cdigo acima, lembre-se de criar variveis para engine(String), desenvolvedor(String) e comprarJogo(boolean) antes disso. If tambm pode ser usado com a palavra reservada in (em). Isso geralmente usado em Arrays(vetores):var nomes = Array(max, rick, joe); if(joe in nomes) Debug.Log(Joe foi encontrado!);

Aprenda a programar em C# na Unity3D: http://www.youtube.com.br/user/xxgutoxxx Inscreva-se em meu canal de desenvolvimento para receber updates na home do YouTube:

http://www.youtube.com/user/TheGameDeveloperTG D ltima Edio: 24 Ago 2012 03:49 Por GutoThomas_. Responder Citar

Re: Artigo para iniciantes em JavaScript na Unity 23 Ago 2012 21:52 #111496ESTRUTURAS DE REPETIO

Estruturas de repetio (Looping) permitem que voc repita comandos por um certo nmero de vezes, geralmente at que uma condio seja atingida. E se voc quisesse incrementar um nmero e mostrar o resultado no console? Voc poderia fazer dessa maneira:var numero = 0; numero += 1; Debug.Log(numero); numero += 1; Debug.Log(numero); numero += 1; Debug.Log(numero);

GutoThomas_

OFFLINE Solid Postagens: 32

E assim por diante... Mas isso redundante, e no h nada que programadores preguiosos odeiam mais do que reescrever o mesmo cdigo vrias vezes! Ento, vamos usar um loop For:var numero = 0; for(i=1; i