Pool de objetos, você sabe o que é? Ou melhor, sabe porque você deve começar agora a fazer em seus jogos?
Uma das maiores preocupações que todo programador de jogos deve ter, é com relação à performance do jogo.
E essa técnica Pool de objetos é também conhecida como Object Pooling, e você vai entender de vez como funciona.
O uso excessivo de Instantiates
Dependendo do estilo do seu jogo, você pode ter diversos objetos sendo instanciados em cena a todo instante.
E é muito bacana quando conseguimos fazer aquele nosso joguinho de tiro frenético, por exemplo, funcionar bem.
Mas, a função Instantiate na Unity que é muito usada nesses casos, pode ser uma vilã para os FPS do game.
Pois, quando usamos ela repetidas vezes em um curto período, pode ocasionar engasgos e travamentos no jogo.
Porque ela tem um custo de processamento para o sistema, um pouco mais pesado que o normal.
Por isso, não é ideal usar dentro de loops aleatórios e até updates, mas o fato de usa-lá não é uma má prática.
Pois, é uma função muito necessária, o ponto aqui é saber quando e onde é o melhor momento de usa-la.
Pool de objetos
Para resolver esse problema surgiu o Object Polling, ou Pool de objetos que será crucial para minimizar o impacto no desempenho.
E o conceito é simples, basicamente em um jogo estamos constantemente criando novos objetos em cena.
Mas isso é o que o Instantiate faz, porém, podemos usar um momento específico do jogo para criar esses objetos.
E, na prática, você cria todos os objetos que serão usados ao longo do jogo de uma vez.
Pois armazena todos em uma lista, por exemplo, desativados, e ativa apenas no momento que precisar.
Quando usar?
Por exemplo, seu personagem atira 50 balas em 1 segundo, e você instancia toda hora, essas bullets.
E aqui você poderia instanciar 60 balas de uma só vez no início do jogo enquanto carrega a cena no loading.
E desativa elas, e conforme o jogador sai atirando, vai ativando as balas desativadas, guardadas na lista.
Mas as que estão ativadas em cena, quando saem da visão do jogador, são desativadas e voltam para a lista.
E serão ativadas apenas quando necessário, e é interessante ter uma quantia a mais de bullets na reserva.
Como aqui no exemplo que usamos 50 balas em 1 segundo, mas na lista tem 60 balas guardadas.
Existem diversas maneiras de se criar esse sistema, formas básicas e avançadas.
Mas o importante aqui é você entender esse conceito, e adaptar um sistema que faça isso na lógica do seu jogo.
Pois, cada jogos tem sua lógica e construção particular, então um script genérico pode não funcionar para todos.
Mas entendendo a lógica, você conseguirá recriar o Pool de objetos em qualquer um dos teus jogos.
Uma dica muito bacana para você, que tem interesse em aprender mais sobre a Unity e a sua linguagem C#, essa é a sua chance.
Pois, temos um curso sensacional que te mostra a base da programação na Unity.
E de quebra você ainda vai desenvolver um jogo top down com sistema de diálogo, crafts, inimigo e muito mais.
Basta clicar na imagem ao lado para saber tudo sobre esse curso incrível!
Seja o primeiro a comentar.