Postagens

Mostrando postagens de 2022

[POO] Herança na Unity

Herança é um conceito do paradigma de programação conhecido como Programação Orientada a Objetos , que tem como objetivo construir e trabalhar com abstrações de objetos do mundo real, em um nível de código. A Herança dá a capacidade de uma classe/objeto herdar comportamentos previamente definidos em outra classe, sem a necessidade de duplicação do código, permitindo a extensão e a sobrescrita de comportamentos já existentes, de acordo com a necessidade do novo objeto/classe. Para definir uma relação de herança no C#, a "palavra" reservada : (dois pontos) deve ser utilizada na definição da classe que estamos criando, indicando de qual outra classe o nosso script deve herdar. public class Jogador : MonoBehaviour { // Classe Jogador que herda da classe MonoBehaviour } Por padrão, todos os scripts criados na Unity herdam de MonoBehaviour, que é a classe base da Unity para Scripts que serão associados aos GameObjects do jogo. Embora essa definição de herança

GetComponent - Obtendo a referência para outros componentes do GameObject

Imagem
O editor da Unity é um ferramenta poderosa para auxiliar na configuração do jogo, podendo ser utilizado até para associar valores de variáveis públicas (ou marcadas com SerializeField ) que estejam disponíveis na aba Inspector . Por ser de fácil uso, muitos desenvolvedores acabam sempre utilizando este recurso para associar valores em suas variáveis, arrastando o componente de um objeto para a variável definida em outro script. Um exemplo comum é a criação de um Script para a movimentação de um objeto, por exemplo o jogador, onde essa movimentação será realizada com física, através do Rigidbody . using UnityEngine; public class Jogador : MonoBehaviour { public Rigidbody2D rigidbody2d; } Partindo do script de exemplo acima, com o nosso script contendo uma variável pública do tipo Ridigbody2D , nós precisamos associar o componente  Rigidbody2D , que deve estar presente em nosso objeto, na variável de mesmo nome ( rigidbody2d ) para que possamos utilizá-la no nosso

SerializeField - Serializando variáveis privadas e protegidas

Imagem
Declarar variáveis como públicas ( public ) em nossos scripts é uma forma prática de permitir que os valores dessas variáveis sejam definidos/editados através da Unity , mas do ponto de vista da Programação Orientada a Objetos e principalmente do princípio do Encapsulamento, essa abordagem de variáveis públicas deixa de ser tão encorajada. using UnityEngine; public class Jogador : MonoBehaviour { public string nome; public int vidas; public float velocidadeMovimentacao; public bool invulneravel; public Rigidbody2D rigidbody2d; public Collider2D collider2d; public SpriteRenderer spriteRenderer; } Unity inspector contendo as variáveis públicas do jogador automaticamente serializadas Tornar as variáveis privadas e/ou protegidas para controlar o acesso aos atributos de um script é uma abordagem recomendada pelo princípio do Encapsulamento e pode ser feita de forma simples, alterando o modificador de acesso das nossas

Update, LateUpdate e FixedUpdate

Imagem
Update é o método mais comumente usado para executar ações que precisam ser realizadas com frequência e/ou repetidas vezes em diferentes frames do jogo, mas você sabia que existem outros métodos similares ao Update e que podem ser usados para propósitos mais específicos? Esses outros métodos são o LateUpdate e o FixedUpdate . Update Adicionado automaticamente pela Unity sempre que um novo script é criado, o Update é executado a cada frame do nosso jogo, ou seja, se o jogo está sendo executado a 60 FPS (frames por segundo), isso significa que o método Update de cada um dos nossos scripts será executado 60 vezes por segundo. Por ser um método executado com tanta frequência, é fácil ficar tentado a colocar toda a lógica de atualização do seu jogo no Update, mas é preciso ter cuidado. Quanto mais pesado (mais lógicas complexas) for o processamento realizado no método Update, menor será o FPS (taxa de atualização em frames por segundo) do seu jogo. O recomendado é que apenas lógicas que pr

Teclado: Identificando teclas pressionadas

E aí galera, beleza? Identificar quando o jogador pressionou uma tecla específica do teclado é uma das tarefas mais comuns para jogos de computador e isso pode ser feito de uma forma bem fácil utilizando a classe  Input da Unity. A classe Input foi criada para facilitar a interação com os mais diversos dispositivos de entrada (input), como teclado, mouse, controles e telas sensíveis ao toque, por isso, ela possui um conjunto de métodos bem interessantes para nos ajudar nessa interação. Input.GetKey Um desses métodos é o GetKey . O Input.GetKey identifica se uma  tecla está sendo pressionada . using UnityEngine; public class InputTeclado : MonoBehaviour { public void Update () { if (Input.GetKey(KeyCode.A)) { // Esta mensagem será exibida durante todos os // próximos frames, enquanto a tecla estiver pressionada Debug.Log( "A tecla A está pressionada." ); } } } O método  GetKey   retorna

Awake x Start

Imagem
E aí galera, beleza? Dessa vez vamos falar um pouco sobre os métodos Awake e Start como formas de inicializar os nossos scripts, apresentando as semelhanças e diferenças entre eles. O Start é um método bastante conhecido pelo desenvolvedores Unity, principalmente por estar presente em todos os novos Scripts C# criados na Unity. De modo geral, o Start é recomendado para ser utilizado na inicialização dos seus scripts, pela sua característica de ser o primeiro método a ser executado, logo após o jogo ser iniciado e o GameObject ser ativado. Mas você sabia que existe um método que é executado antes do Start e que pode te ajudar a resolver problemas de inicialização e comunicação entre seus scripts? Awake e Start Os métodos Awake e Start são métodos especiais da Unity, que são automaticamente executados assim que o nosso jogo é iniciado. Essa execução acontece de forma automática tanto no Editor da Unity, durante o processo de desenvolvimento do jogo, quanto durante a execução do jogo