full screen background image

Tutorial: Usando JSON no Unity3D com C#

Tutorial: Usando JSON no Unity3D com C#

O formato JSON (javascript notation object) ficou muito conhecido nos últimos anos com o aumento das aplicações WEB. Hoje, ele é quase um estilo padrão para comunicação entre cliente e servidor, mesmo fora das Web Applications.

Nesse artigo veremos uma das formas que podemos usar para implementar os processos de Serialization e Deserialization com C# no Unity3D.

Mas primeiro…

Nesse tutorial levo em consideração que você já sabe o que é JSON e está apenas buscando ideias de como implementá-lo no Unity.

Vamos lá

Existem muitas formas de se realizar os processos acima citados, considerando desde criar na mão de acordo com a sua necessidade usando os próprios meios do Unity, embora esses sejam bem limitados ainda, ou ainda usando alguma biblioteca de terceiros. Aqui, usarei o último caso. Sendo assim, recomendo que baixem esse aquivo “https://gist.github.com/darktable/1411710” e adicionem ao seu projeto que será usado para testes.

Essa biblioteca trabalha com Coleções (Dictionary e List). Então, vamos ver como funciona cada processo.

Serialization

Na serialização vamos converter nossas coleções para uma string no formato de JSON.

Primeiro criaremos a Collection que será serializada:

public string Serialize()

{

IDictionary<object, object> dictionary = new Dictionary<object, object>();

dictionary.Add(“money”,9.5f);

dictionary.Add(“lifes”,5);

dictionary.Add(“name”, “Bilbo”);

// para subobjetos adicionamos outra Collection

List<string> weapons = new List<string>();

weapons.Add(“Sword”);

weapons.Add(“Hamer”);

weapons.Add(“Shield”);

dictionary.Add(“weapons”, weapons);

// aqui a mágica acontece

string json = MiniJSON.JSON.Serialize(dictionary);

}

O retorno da função acima seria algo como:

{

"money":9.5,

"lifes":5,

"name":"Bilbo",

"weapons": [

"Sword",

"Hamer",

"Shield"

]

}

Poderíamos, por exemplo, enviar essa informação para uma API REST que salva nossos dados em nuvens.

Deserialization

Agora faremos exatamente o contrário.

Imagine que recebemos a string acima direto do servidor e então converteremos para uma collection.

public ICollection<object,object> Deserialize(string json)

{

IDictionary<object,object> dictionary = MiniJSON.JSON.Deserialize(json) as Dictionary<object,object>();

return dictionary;

}

Simples, não?

Agora você pode usar a coleção, lembrando de usar casts já que a coleção sempre vai retornar para o tipo object e temos floats, ints, string e até outras coleções.

É isso. Vou ficando por aqui. Até a próxima.


Tags:

Allan Douglas

Allan Douglas (Redator) – Formado em Análise e Desenvolvimento de Sistemas (Estácio de Sá). Atualmente trabalha como Analista Líder na Teccenter no Recife – PE. Também desenvolve soluções WEB, Mobile e Games. É fanboy da SEGA e adora jogos de estratégia digitais ou analógicos.


Show Buttons
Hide Buttons