Muitos desenvolvedores iniciantes subestimam a importância dos Actions ao programar seus jogos.
E eles são uma das ferramentas mais poderosas para tornar sistemas mais modulares, organizados e reutilizáveis.
E compreender como aplicar Actions em seus sistemas pode transformar completamente suas possibilidades.
O que é um Action?

No contexto da programação com C#, principalmente usando Unity, um Action é um tipo de delegate.
Ou seja, um ponteiro para uma função que pode ser chamado quando necessário.
E diferente dos métodos tradicionais, os Actions permitem que você atribua múltiplas funções.
E que podem ser chamadas quando determinado evento ocorrer, disparando diversos métodos distintos.
Em resumo, é possível guardar uma ou mais funções em uma variável.
Aplicação do Action em nossos jogos

O maior benefício dos Actions está na modularidade que ele nos possibilita construir.
Por exemplo, imagine um sistema de dano onde cada inimigo pode ter um efeito diferente ao ser atingido:
E aqui um inimigo pode explodir, outro pode soltar upgrades, e outro ainda pode gritar e alertar aliados.
E com Actions, você pode criar um sistema genérico de dano, mas que aceita diferentes comportamentos personalizados.
Dessa forma, cada inimigo reagirá de maneira única ao receber um dano do jogador, mesmo todos usando o mesmo sistema.
Como fazer um Action?
Na Unity, importe a biblioteca UnityEngine.Events, depois crie uma variável para seu Action como na imagem abaixo.

E no script do seu inimigo que irá criar a função de dano personalizada, crie uma função void e com o mesmo parâmetro do Action.
Pois eles não aceitam funções que têm retorno.

E na sequência, você deve criar uma variável para armazenar a classe original do Action, e no OnEnable, realizar seu GetComponent.
Mas, após fazer essa referência, acesse o Action através da variável, e com o comando “+=” você adiciona sua função personalizada no Action.

E na função onde será disparado o Action, você chama o action com um ponto de interrogação.
E assim evitará que esse action execute sem ter funções armazenadas, e por fim chame o Invoke.

Mas, como uma última boa prática, você precisa, na função OnDisable, retirar esse action armazenado.
Fazendo essa verificação abaixo, antes que ele seja destruído e deixe restos na memória do sistema!

Vale a pena usar?

Aprender a usar Actions permite que você crie sistemas flexíveis e mais profissionais, mesmo sendo iniciante.
E é um divisor de águas no aprendizado de programação para jogos, especialmente para evitar código engessado e repetitivo.
Conheça o Curso Start GameDev, um curso feito para iniciantes, com um preço extremamente acessível.
E que vai te ensinar a criar seu primeiro jogo saindo do zero.
Seja o primeiro a comentar.