No ramo da programação é comum, termos a necessidade de efetuar diversos tipos de trocas de dados e armazenamentos.
E na área de desenvolvimento de jogos não é diferente, e para isso existem diversos tipos de soluções.
E hoje conversaremos mais sobre o Json, que vem se tornando amplamente usado em diversas áreas e linguagens.
O que é Json?
O nome Json, se refere a “Javascript Object Notation”, e apesar desse nome ele não é escrito unicamente nessa linguagem.
E o Json basicamente define um padrão para realizar o armazenamento e a troca de informações em formato de texto.
E seu padrão é considerado muito simples e eficiente, sendo facilmente interpretado por diversas linguagens.
E por gerar um arquivo muito leve de ser enviado, ele vem recebendo suporte em quase todas as áreas.
Pois, até a própria Google vem fazendo um amplo uso do Json em transferências de dados em suas APIs.
O formato Json
Uma das grandes vantagens do Json é possuir um padrão de escrita, fácil de ser interpretado até por nós.
Pois, todo Json começa e termina com chaves {}, e os dados são representados em pares de nome e valor.
E cada dado diferente é separado por vírgula, e por fim todo o conjunto de informações é chamado de “Objeto”.
E as variáveis são escritas no arquivo em Strings entre aspas, e em seguida, dois pontos, separando os dados salvos.
E é possível salvar nos dados, strings, números, boleanas, arrays, e até valores null (vazio).
Como usar na Unity?
Primeiramente é necessário criar uma classe específica para fazer esse tipo de save, e que não Herde de Monobehaviour.
Pois, para serializar um arquivo em Json, ele não dá suporte para uma classe com essa herança.
E com isso, esse script de Save, também não poderá ser anexado em objetos dentro da Unity.
E assim você precisará dar os comandos de Save e Load, de um outro script que esteja na cena.
E então para exemplo criamos o script SaveJason, para salvar, e o script Player, para dar os comandos.
Serializar a Classe:
Agora precisaremos serializar essa classe saveJason, colocando o atributo [Serializable], acima da classe.
E em alguns casos, será necessário importar a biblioteca using.System, para poder adicionar o atributo.
E com esse atributo adicionado, agora é possível ler essa classe e seus dados com o Json.
Preparando a Classe:
O primeiro detalhe é que por padrão o JsonUtility, só consegue enxergar aquilo que for públic nesta classe.
E então variáveis privates ou protecteds, você precisa assinalar acima da variável que elas sejam serializadas.
Pois, colocando o atributo [SerializeField], você permite que o JsonUtility, salve esse tipo de variável.
E agora, você precisa declarar corretamente as variáveis que serão salvas.
E no script Player, responsável pelos comandos, você declara uma variável do tipo da classe saveJson.
E logo no Start, você armazena na variável uma nova instância do saveJason, para evitar erros de referência.
Método Save:
Agora é necessário criar um método no script saveJson, responsável por salvar os nossos dados.
E para isso podemos declarar uma string, responsável por armazenar o local onde salvaremos o arquivo Json.
E podemos passar entre aspas o caminho: “Assets/PlayerSave.txt”, com a pasta e o nome do arquivo.
Pois, agora dentro do método Save, criamos uma variável local para armazenar os valores da própria classe saveJson.
E usamos o comando JsonUtility.ToJson(this, true), para converter a própria classe (this), em formato Json.
E o segundo parâmetro é se desejamos ou não, que ele salve o arquivo já formatado.
Em seguido importamos a biblioteca using.System.IO, para usar o comando File.WriteAllText().
Pois, esse comando permite escrever um texto em determinado arquivo, e passamos as variáveis path e content nos parâmetros.
E lembrando que você pode manipular essas variáveis, e mudar seus valores, antes de chamar o comando Save();
Por exemplo, criando métodos que recebam valores e alteram a variável como: save life, save Attack,etc.
E através desses métodos, agora é possível, dar o comando que irá salvar seus dados em texto.
Método Load:
Basicamente para o Load só precisamos fazer o processo inverso, e converter os valores novamente.
E primeiro criamos o Método Load, depois dentro dele criamos mais uma variável local content, para guardar os valores.
E em seguidas atribuímos os valores na variável com o comando: File.ReadAllText(path), passando o caminho onde foi salvo(path).
E agora criamos uma variável local (mySave)que vai armazenar o texto convertido, encontrado no path.
E para isso usamos o comando: JsonUtility.FromJson<SaveJson>(content), que fará essa conversão de volta.
E por fim, basta pegar cada variável e fazer ela receber os seus valores referentes, armazenados em mySave.
E agora você pode chamar em seu código essa função, sempre que precisar carregar os dados novamente.
Json é mais uma opção de save, que você pode usar para salvar seus jogos, junto a tantas outras.
E pode parecer meio complexo a princípio, mas conforme você vai usando, você passa e entender melhor seu funcionamento.
E esperamos que esse Artigo possa contribuir um pouco mais com seus estudos.
Seja o primeiro a comentar.