Pesquisar em Unity

Codificação em C# em Unity para iniciantes

Você quer aprender a programar no Unity para começar seu primeiro jogo, mas não sabe por onde começar. Nós entendemos bem isso. Aqui está uma breve apresentação dos elementos de script no Unity e material didático que ajudarão você a começar com nossos projetos mais avançados como "Space Shooter". Isso deve ajudá-lo nas seguintes áreas: os fundamentos básicos da codificação, como variáveis, funções e classes, e como usá-los.

Vá aqui se você for um programador experiente, mas novo no Unity.

O que é scripting no Unity?

Scripting diz ao seu GameObjects como se comportar. Os scripts e componentes associados aos GameObjects e suas interações compõem o gameplay. A criação de scripts no Unity é diferente da programação pura. Se você já programou, por exemplo um aplicativo, você provavelmente notou que Unity não exige que você crie o código que executa esse aplicativo, pois Unity faz isso por você. Em vez disso, você pode se concentrar no jogo em seus scripts.

Unity é executado em um grande loop e lê todos os dados de uma cena de jogo. Todas as informações sobre iluminação, meshes e comportamentos são capturadas e processadas para você.

Se você pensar em televisão, onde, por exemplo, na América do Norte, você tem 29,5 frame/segundo, Unity precisa fazer a mesma coisa. Executa frames discretos únicos, um após o outro. Você direciona Unity com as instruções que você escreve nos seus scripts, e Unity os executa frame após frame o mais rápido que pode.

Alcançar uma alta taxa de frame significa que seu jogo não ficará mais fluido, mas seus scripts também serão executados com mais frequência, tornando os controles mais responsivos.

Quais idiomas você pode usar no Unity?

Um script deve ser associado a um GameObject na cena para ser chamado por Unity. Os scripts são escritos em uma linguagem especial que Unity pode entender. E é através dessa linguagem que podemos conversar com a engine e dar nossas instruções.

A linguagem usada em Unity é chamada C# (pronuncia-se C-sharp). Todas as linguagens que Unity opera são linguagens de script orientadas a objetos. Como qualquer idioma, as linguagens de script têm sintaxe ou partes da fala, e as partes principais são chamadas de variáveis, funções e classes.

Se você estiver usando uma versão Unity até 2017.3, o editor de texto MonoDevelop estará disponível. Isso nos ajuda a completar nosso código, diz-nos se escrevemos código errado e nos permite usar atalhos. A partir da versão 2018.1, você também pode Visual Studio for Unity Communityou outros editores de texto, como Visual Studio, Notepad ou Sublime text.

Aqui está um script com um código de exemplo (baseado noTutorial- Programação Unity para principiantes):

sample code unity

Como você pode ver, existem variáveis, funções e classes.

O que é isso?

Variáveis mantêm valores e referências a objetos (você pode ver objetos como variáveis “maiores”). Eles são como uma caixa que guarda algo para nós usarmos. Variáveis começam com uma letra minúscula.

Funções são coleções de código que comparam e manipulam essas variáveis. As funções começam com uma letra maiúscula. Organizamos códigos em funções para que possam ser facilmente reutilizados várias vezes em diferentes partes do programa.

As Classes são uma forma de estruturar o código para agrupar coleções de variáveis e funções para criar um modelo que defina as propriedades de um objeto.

Scripting é principalmente comparar esses objetos e seus estados e valores atuais. É baseado na lógica que determina um resultado ou resolução.

Variáveis

No Unity, os scripts começam com o layout das ferramentas que você precisa no topo, geralmente declarando variáveis. Você pode ver as variáveis declaradas aqui com a palavra-chave de visibilidade "pública" ou "privada", seguida por um tipo e um nome.

variables in unity

Quando estamos declarando suas variáveis, existem vários tipos de visibilidade, mas os dois mais importantes são public (público) e private (privado).

Se você criar um script com o texto acima em seu editor de código e depois atribuir o script a um GameObject no Unity, verá que pode acessar e ver a variável light definida como pública no Inspector, mas não a privada. Isso ocorre porque as variáveis definidas como privadas só podem ser acessadas dentro desse script específico, dentro dessa classe específica.

Se você tornar isso público, então será acessível a outros scripts e outras classes e poderá ser alterada no Inspector do editor Unity. Então, isso significa que outras pessoas podem acessá-la e mudar seu valor.

Existem muitas razões para escolher entre privado ou público. As variáveis privadas permitem que seu código fique mais limpo, já que você sabe que o valor dessas variáveis pode ser alterado apenas dentro dessa classe. Isso torna a depuração e a manutenção do código mais fácil.

Se você selecionar "public" e encontrar um problema, deverá procurar na base de código a causa do problema, porque todos os outros objetos têm acesso a essa variável. No entanto, se você deseja que os objetos se comuniquem entre si, você precisa que algumas variáveis (ou funções) sejam públicas.

Outro aspecto importante das variáveis é o tipo. "Type" define que tipo de valor é a variável retida na memória, por ex. pode ser um número, texto ou tipos mais complexos, como os da imagem abaixo: Transform, Light e Demo Script são de fato referências a Componentes. Unity precisa saber que tipo de objeto é para saber como lidar com ele.

variables in unity inspector

Também importante é o nome da variável. Para nomear variáveis, você precisa saber que elas não devem começar com um número nem conter espaços. Portanto, há um estilo de escrever os nomes. Em C#, a convenção de nomenclatura é camelCase: você começa com uma letra minúscula e adiciona palavras, sem espaços, começando com uma letra maiúscula, por exemplo "myLight".

Quando Unity compila o script, as variáveis públicas ficam visíveis no editor, tal como você pode ver no Inpector abaixo.

demo script unity inspector

Funções

Os scripts manipulam as variáveis usando funções. Existem várias funções que são executadas automaticamente no Unity. Por exemplo:

functions in unity

Awake é chamado apenas uma vez quando o GameObject é inicializado com esse componente. Se um GameObject estiver inativo, não será chamado até que seja ativado. No entanto, Awake é chamado mesmo quando o GameObject está ativo, mas o componente não está habilitado (através da pequena caixa de seleção ao lado do nome). Você pode usar Awake para inicializar todas as variáveis às quais precisa atribuir um valor.

Start - tal como Awake, Start é chamado quando um GameObject está ativo, mas somente quando o componente estiver habilitado. Para mais informações sobre as diferenças com a Awake, veja este vídeo.

Update é chamado uma vez por frame. É aqui que você coloca o código para definir a lógica que é executada continuamente, como animações, IA e outras partes do jogo que precisam ser atualizadas constantemente.

FixedUpdate é quando você quer fazer um trabalho de física.

Como pode ver, há FixedUpdate e Update, e na na seção de tutoriais de scripts, você pode aprender como efetuar alterações a cada frame com as funções Update e FixedUpdate e suas diferenças.

LateUpdate é uma função semelhante à Update, mas o LateUpdate é chamada no final do frame. Unity analisa todos os GameObjects, detecta todas as atualizações e, em seguida, chama LateUpdates. Isto é útil para coisas como a câmera. Digamos que você queira mover um personagem no seu jogo. E então ele colide com outro personagem e acaba em uma posição diferente. Se movermos a câmera ao mesmo tempo que o personagem, haverá um balanço e a câmera não estará onde deve estar. Então, basicamente, é um segundo loop que é muito útil.

Escrever funções

Ao escrever funções, observe que elas começam com o tipo de saída da função, seguido pelo nome da função e os parâmetros entre parênteses(se houver). Os nomes das funções começam com uma letra maiúscula, o conteúdo da função está entre chavetas. Aqui está um exemplo de como escrever uma função:

writing functions unity

Como chamamos essa função?

function-in-unity

Funções podem executar cálculos e, em seguida, gerar um valor. Você pode pedir a uma função para fazer algo, processar as informações e, em seguida, emitir uma resposta. Se você usar o tipo "void", a função não retornará nada.

Classes

Classes são coleções dessas variáveis e funções. Por exemplo, este script é uma classe:

class example in Unity

Tenha em mente que o nome da classe deve corresponder ao nome do arquivo do script C# para que ele funcione. Para estar conectado a um GameObject, ele deve derivar de outra classe chamada MonoBehaviour, que é configurada automaticamente quando você começa a criar um script. As classes também podem ser públicas ou privadas.

Se você criar uma classe personalizada no Unity, como no exemplo abaixo, você deverá solicitar a serialização, Isso significa que é convertida em dados simples que Unity pode examinar no Inspetor. Se você fizer isso, a classe aparece no Inspetor.

classes in unity example

Variáveis, funções e classes são apenas o básico para iniciar a codificação no Unity. Confira a Seção de aprendizado, você pode encontrar imensos tutoriais de scripts úteis que explicam os conceitos básicos de programação e ensinam como criar códigos detalhados para seus projetos.