[UNITY] Salvando e carregando dados com serialização (Parte 1)

 Introdução:

Olá pessoal, como estão? Neste tópico eu irei ensinar pra vocês uma forma bem simplesdinâmica e segura de implementar uma estrutura em seu game, para carregar e salvar dados sem precisar escrever muito código ou utilizar algum plugin externo. Vamos fazer isso apenas utilizando recursos nativos da Unity.

Serialização e Desserialização:
Primeiramente, vamos entender o que seria esse processo de serialização.

Na computação, serialização é um processo de transmissão ou armazenamento de dados. Através deste processo, é possível converter uma estrutura de dados qualquer (como uma classe ou uma struct, por exemplo), em sequência de bites.
Dessa forma, podemos transmitir esses dados entre linguagens ou até mesmo via web, pois não estamos mais lidando com campos fortemente tipados¹, mas apenas com trilhas de bites que podem ser interpretados por qualquer linguagem de programação que trabalhe com serialização.

A definição de serialização resgatada do Wikipedia agora parece fazer mais sentido, não?
Em ciência da computação, no contexto de armazenamento e transmissão de dados, serialização é o processo de tradução de estruturas de dados ou estado de objeto em um formato que possa ser armazenado e reconstruído posteriormente no mesmo ou em outro ambiente computacional.
Serialização por Wikipédia.


Se esse processo pode guardar o estado de um objeto, isso significa que ele passa a ser um dado persistente², ou seja, uma informação que está salva/armazenada, que persiste seu estado atual.

O processo inverso é chamado de desserialização, ou seja, a etapa de resgatar aquele dado, "desconvertendo-o" do formato em bit, para seu tipo original.

Então podemos pensar que serializar um objeto é salvar/manter seus dados(estados) e desserializar é carregar novamente esses dados, reconstruindo-o em seu tipo de estrutura original.

Serialização com JSON:
Na Unity temos um meio de serializar objetos de uma forma bem simples e direta, através da linguagem de notação JSON³, onde a estrutura é serializada ao convertê-la em uma única string, onde temos uma esquema de pares de chave : valor, onde "chave" é o identificador, e o valor, obviamente, seu valor armazenado.

Vamos supor que desejemos armazenar dados do jogador dentro do nosso jogo. Para tal, podemos criar uma simples struct que contenha esses valores que nós achamos necessário de armazenar:

Json:
public struct PlayerData{
public string name;
public float health, coins;
public int score;
}


Esses são os dados que para nosso jogo, são importantes de serem salvos e posteriormente carregados.

Quando o objeto dessa estrutura passa pelo processo de serialização com JSON, ela é convertida para uma string neste formato abaixo (os valores à direita foram escolhidos arbitrariamente para servirem de exemplo):

Json:
'{"name" : "May",
"health" : 10,
"coins" : 200,
"score" : 150}'


A classe responsável por este processo dentro da biblioteca da Unity, é a classe JsonUtility, onde vamos utilizar hoje neste tutorial.


Agora que já sabe o que é serialização, desserialização e persistência de dados, podemos prosseguir com o restante do tutorial na próxima postagem onde explicarei como utilizar esses conceitos na prática! Até lá! 

Comentários