Scriptable Objects (S.O), na Unity é mais uma opção que vem para facilitar o trabalho do desenvolvedor.
Pois, através dele podemos otimizar nosso trabalho em diversas mecânicas e implementações.
E neste artigo vamos te ajudar a entender melhor todas as vantagens de se usar Scriptable Objects.
Scriptable Objects, o que são?
Scriptable Objects são objetos personalizados que permitem armazenar e compartilhar dados entre diferentes instâncias de objetos.
E mesmo em diferentes cenas, e são úteis para criar sistemas de dados, flexíveis e extensíveis em jogos.
Pois, ao contrário dos scripts que herdam de MonoBehaviours, que geralmente vinculados a objetos em cena.
E armazenam os dados em variáveis declaradas dentro do script, os Scriptable Objects são objetos independentes.
E que podem ser criados e modificados em tempo de execução, pois, não estão em cena como os scripts.
Por isso, podem ser usados para armazenar dados que precisam ser acessados globalmente, como configurações, dados de inventário, etc.
E basicamente são mais parecidos com assets, pois, ficam armazenados na nossa pasta assets.
Porém, eles ainda podem ser facilmente serializados e deserializados, permitindo que você salve e carregue dados do jogo em arquivos.
E pode ser útil para jogos que têm muitos dados diferentes que precisam ser salvos e restaurados.
Scriptable Objects vs Scripts
Existem algumas diferenças significativas entre scripts normais e S.O na Unity:
Propósito:
Scriptable Objects são projetados para armazenar e compartilhar dados entre diferentes objetos na cena ou mesmo em diferentes cenas.
E enquanto os scripts normais são usados para adicionar comportamento a objetos específicos na cena.
Instância:
Scripts normais são anexados a objetos específicos na cena e são executados como parte do comportamento desses objetos.
Mas, Scriptable Objects são independentes e podem ser acessados globalmente sem a necessidade de vinculação a um objeto específico.
Herança:
Scripts normais podem herdar de outras classes, como MonoBehaviour, para obter funcionalidades adicionais.
E S.O não podem herdar de outras classes, pois, são derivados diretamente da classe ScriptableObject.
Armazenamento de dados:
Em um script normal, os dados são armazenados como variáveis de instância.
Porém, em um Scriptable, os dados são armazenados como propriedades públicas e serializáveis.
Persistência de dados:
Em um script, os dados são perdidos quando o objeto a que o script está anexado é destruído.
E em um Scriptable, os dados são persistentes e podem ser salvos e até mesmo carregados em arquivos.
Personalização:
Scriptable Objects podem ser personalizados para cada instância de objeto.
E permite a criação de sistemas de dados e eventos flexíveis e extensíveis em jogos.
Mas, scripts têm comportamento mais fixo e são usados para adicionar comportamento específico a objetos na cena.
E em resumo, enquanto scripts normais são usados para adicionar comportamento a objetos específicos na cena.
Mas, Scriptable Objects são usados para armazenar e compartilhar dados entre diferentes objetos na cena.
E até mesmo em diferentes cenas, permitindo a criação de sistemas de dados e eventos flexíveis e código modular.
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!
E um bom exemplo do uso os Scriptable Objects, seria na criação de diversos inimigos para seu jogo.
Pois, é possível com apenas um prefab de inimigo, criar dezenas de inimigos totalmente diferentes.
E até mesmo com comportamentos únicos, e no vídeo abaixo você verá, na prática, como isso é feito:
Seja o primeiro a comentar.