Variáveis e todo o seu conceito é algo fundamental, quando estamos desenvolvendo um jogo na Unity e programando com C#.
Mas pode surgir a dúvidas em diversos iniciantes: “Por que precisamos referenciar essas variáveis depois de declará-las?”.
E entender o que está acontecendo em termos de programação ajuda a evitar erros e otimizar o desenvolvimento do jogo.
O que são variáveis?
As variáveis em C# são espaços reservados na memória que permitem armazenar e manipular informações dentro do código.
E elas podem ser de diferentes tipos, como números inteiros (int), textos (string), objetos da Unity como GameObject, etc.
E quando você declara uma variável, você está reservando espaço para armazenar um determinado tipo de dado.
Por exemplo, ao declarar uma variável do tipo ‘Rigidbody2D’, você está criando uma “caixa”.
Onde será armazenada a referência a um componente Rigidbody2D no seu jogo.
No entanto, a simples declaração não coloca nenhum Rigidbody2D dentro dessa variável.
Podemos dizer que você apenas comprou a gaveta, e deu um nome a ela, mas não guardou nada lá dentro ainda.
Por que devemos referenciar variáveis?
No segundo passo você também precisará atribuir um valor a esta variável criada.
Isso porque, por padrão, as variáveis criadas sem uma atribuição são nulas, ou seja, vazias.
No caso da Unity, isso pode gerar o famoso erro “NullReferenceException”.
E que acontece quando tentamos acessar uma variável que não tem nenhum valor referenciado.
Por exemplo, ao declarar Rigidbody2D rig, você criou uma variável chamada rig.
Mas ainda não disse ao seu código qual objeto ou componente ela deve referenciar.
E se tentar acessá-la sem antes referenciá-la, o código não saberá o que fazer, resultando em um erro.
Formas de se referenciar variáveis!
Para evitar erros, você precisa “Guardar” algo nessa variável com o valor correto, o que é feito ao referenciá-la.
E há algumas formas de fazer isso no Unity, dependendo da necessidade e da estrutura do código:
No método Start() ou Awake(): É uma prática comum referenciar variáveis no início do ciclo de vida de um objeto na Unity.
Por exemplo, aqui, você está dizendo ao código para pegar o componente ‘Rigidbody2D’ do objeto onde o script está anexado.
E armazená-lo na variável rig, ou seja, a gaveta chamada rig que você criou anteriormente.
Atribuição pelo Inspector: Se sua variável for pública ou marcada com ‘[SerializeField]’, você pode arrastar o objeto.
Ou componente diretamente no campo da variável através da interface do Unity.
E isso facilita a configuração sem precisar de código para algumas situações.
Nesse caso, a referência será estabelecida no Editor da Unity, sem a necessidade de código adicional no ‘Start()’.
Atribuição dinâmica: Em algumas situações, você pode precisar referenciar variáveis dinamicamente, dentro de métodos específicos.
Por exemplo, quando um evento ocorre ou quando uma condição é satisfeita.
E isso é útil quando a referência só faz sentido em um contexto específico.
Cuidados com a performance
Há uma diferença importante entre referenciar uma variável no início, via Start() ou pelo Inspector.
E referenciá-la a cada vez que for necessária, durante a execução do código.
Mas a vantagem de referenciar variáveis no ‘Start()’ ou via Inspector é que a operação de busca pela referência ocorre apenas uma vez.
E isso é eficiente, pois, o valor já estará disponível durante toda a execução do jogo, economizando processamento.
No entanto, referenciar localmente pode ser perigoso e menos eficiente se usada em métodos que são chamados repetidamente.
Como dentro do ‘Update()’, por exemplo, pois, a Unity terá que buscar a referência a cada frame.
Impactando negativamente a performance do seu jogo!
Referenciar variáveis é uma etapa crucial para garantir que seu código funcione corretamente.
E para você indie que está com dificuldades para entender esses passos básicos, que tal conhecer um atalho?
Com o curso Start Gamedev você cria seu primeiro jogo, saindo do zero, passo a passo detalhado, por um preço extremamente baixo.
Seja o primeiro a comentar.