[TUTORIAL] Serialização - JSON
+12
googolepton
augustobrito
igorobm
Extreme Craft
Deiverson
Chilinger
dstaroski
Callyde Jr
Matheus sonico
artplayer
Weslley
RenanMSV
16 participantes
Página 1 de 1
[TUTORIAL] Serialização - JSON
Olá, hoje vim falar sobre serialização (JSON), e como ela ajuda e muito em algumas tarefas do dia a dia.
Com ela podemos transformar qualquer coisa: string, int, array, instancias de classes...etc num formato string e depois recuperar esses valores e reconstruir o que era antes.
Ou seja, se serializarmos uma instancia de uma classe será dado uma string que podemos salvar em qualquer lugar, e ao desserializar a string ela voltará a ser uma instancia da mesma classe. Ou seja, podemos salvar tudo, de forma rápida e simples e recuperar quando quisermos!
Fiz um pequeno script que mostra como utilizar. Existem varias opções quando se fala de JSON em .NET, mas a Unity possui um próprio. E no site diz que ele é bem mais rápido que as outras opções... então bora pro script.
Ao serializar a string retornada será mais ou menos assim:
https://docs.unity3d.com/Manual/JSONSerialization.html
Com ela podemos transformar qualquer coisa: string, int, array, instancias de classes...etc num formato string e depois recuperar esses valores e reconstruir o que era antes.
Ou seja, se serializarmos uma instancia de uma classe será dado uma string que podemos salvar em qualquer lugar, e ao desserializar a string ela voltará a ser uma instancia da mesma classe. Ou seja, podemos salvar tudo, de forma rápida e simples e recuperar quando quisermos!
Fiz um pequeno script que mostra como utilizar. Existem varias opções quando se fala de JSON em .NET, mas a Unity possui um próprio. E no site diz que ele é bem mais rápido que as outras opções... então bora pro script.
- Código:
using UnityEngine;
using System.Collections;
using System.IO;
[System.Serializable] // Isto deixa a classe Objeto visivel no inspector
public class Objeto { // Criamos uma classe que irá guardar os dados do objeto para teste.
public int idObjeto;
public Vector3 posicaoObjeto;
public Vector3 rotacaoObjeto;
}
public class Serializacao : MonoBehaviour {
public Objeto objeto,objeto2; // declaramos 2 variaveis de nossa classe
void Start(){
objeto = new Objeto() { // instanciamos a classe Objeto e declaramos seus valores manualmente
idObjeto = 1,
posicaoObjeto = new Vector3(93,-19,35.3565f),
rotacaoObjeto = new Vector3(45,0,0),
};
serializar(objeto); // mandamos serializar e guardar os dados em um arquivo
objeto2 = desserializar (); // mandamos desserializar e recuperar esses dados para uma nova instancia da classe Objeto.
}
void serializar(Objeto obj) { // pedimos um objeto
string str = JsonUtility.ToJson(obj); // serializamos
Directory.CreateDirectory(Application.dataPath + "/Save/"); // criamos uma pasta
File.WriteAllText(Application.dataPath + "/Save/SaveGame.sav", str); // criamos o arquivo e escrevemos o texto
//PlayerPrefs.SetString("SaveGame-Objeto",str); // Salvamento com PlayerPrefs
}
Objeto desserializar() {
string str = File.ReadAllText (Application.dataPath + "/Save/SaveGame.sav"); // recuperamos o texto do arquivo
//string str = PlayerPrefs.GetString("SaveGame-Objeto"); // Pegando os dados com o PlayerPrefs
return JsonUtility.FromJson<Objeto>(str); // reconstruimos o objeto e retornamos.
}
}
Ao serializar a string retornada será mais ou menos assim:
- Código:
{"idObjeto":1,"posicaoObjeto":{"x":93.0,"y":-19.0,"z":35.35649871826172},"rotacaoObjeto":{"x":45.0,"y":0.0,"z":0.0},"layerObjeto":1}
https://docs.unity3d.com/Manual/JSONSerialization.html
RenanMSV- Instrutor
- PONTOS : 4483
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Interessante :D
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Matheus sonico- Avançado
- PONTOS : 3835
REPUTAÇÃO : 29
Idade : 22
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Maravilha de script bem explicado! Uma pergunta RenanMSV, pelo que eu entendi, posso utilizar esse método para "Salvar" o progresso do jogo, certo?
Abraço!
Abraço!
Re: [TUTORIAL] Serialização - JSON
Sim, pode, é eficiente. Na verdade voce pode salvar tudo! Praticamente tudo que quiser.
RenanMSV- Instrutor
- PONTOS : 4483
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Adorei mano bem simples e direto.
Chilinger- MembroAvançado
- PONTOS : 4091
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Uma duvida em relação a serialização dos dados, teria como serializar aplicando alguma criptografia embutida? Minha preocupação é utilizar de forma segura para evitar que jogadores mal intencionados abram o arquivo serializado, alterem o conteudo e injetem dados com informações falsas para desbloquear niveis, colocar vida infinita, life infinito, etc.
Deiverson- Iniciante
- PONTOS : 3514
REPUTAÇÃO : 3
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Criptografe a string de saida. E descriptografe antes de desserializar.
RenanMSV- Instrutor
- PONTOS : 4483
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
ehh, n entendi mt então tenho uma perguntas :/ , como eu colocaria algo pra salvar? so chamar a void serializar, depois colocar q objeto? daria pra salar qualquer variável q existe? onde boto esse script, no objeto que eu quero salvar ou num objeto vazio?
:C
:C
Extreme Craft- Avançado
- PONTOS : 3275
REPUTAÇÃO : 30
Idade : 23
Áreas de atuação : C# , Blender , Unity
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Teria como salvar todos os itens de um array? Digamos que vc tenha uma array com os objetos, assim poderia salvar todos os objetos e um só arquivo em vez de um arquivo para cada objeto que eu foce salvar???
igorobm- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 39
Idade : 27
Áreas de atuação : Discord -> 163979429742116864
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Mano tava com essa dúvida ontem, eu assisti 2 videos que me ajudaram 100%igorobm escreveu:Teria como salvar todos os itens de um array? Digamos que vc tenha uma array com os objetos, assim poderia salvar todos os objetos e um só arquivo em vez de um arquivo para cada objeto que eu foce salvar???
1º e para Salvar o Json How to Save Data Using JSON in Unity (LitJSON).
2° e para Ler o Json How to Read JSON Data in Unity (LitJSON).
A vc vai conseguir salvar Um array e ler ele.
igorobm- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 39
Idade : 27
Áreas de atuação : Discord -> 163979429742116864
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Dica: Não use JSON para salvar dados críticos pois é facilmente editável, a melhor forma de se fazer isso é usando BinaryFormatter que vai serializar os dados em forma binária. Outra coisa, nem todas as estruturas de dados e componentes da Unity são suportados por serialização direta, ou seja, voce tem que decompor em Arrays ou estruturas mais simples. Existe tb a serializaçao com XML que é bem interessante pra salvar dados de database simples.
Re: [TUTORIAL] Serialização - JSON
muito bom seu script de serializacao bem explicado, parabens
googolepton- Avançado
- PONTOS : 2790
REPUTAÇÃO : 38
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Vc tem algum link tutorial? de como que usa o BinaryFormatterdimmuo escreveu:Dica: Não use JSON para salvar dados críticos pois é facilmente editável, a melhor forma de se fazer isso é usando BinaryFormatter que vai serializar os dados em forma binária. Outra coisa, nem todas as estruturas de dados e componentes da Unity são suportados por serialização direta, ou seja, voce tem que decompor em Arrays ou estruturas mais simples. Existe tb a serializaçao com XML que é bem interessante pra salvar dados de database simples.
igorobm- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 39
Idade : 27
Áreas de atuação : Discord -> 163979429742116864
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Olá amigo, tente ver este link:
https://gamedevelopment.tutsplus.com/tutorials/how-to-save-and-load-your-players-progress-in-unity--cms-20934
~"Se você apertar com o botão direito do mouse, você verá uma opção de Traduzir para o Português, caso seu navegador seja o Google Chrome."
Tem esse Tutorial daqui também:
https://www.schultzgames.com/t4937-tutorial-metodo-simples-de-salvar-progresso-do-jogo-em-um-arquivo-separado#50683
Espero ter ajudado. :D
https://gamedevelopment.tutsplus.com/tutorials/how-to-save-and-load-your-players-progress-in-unity--cms-20934
~"Se você apertar com o botão direito do mouse, você verá uma opção de Traduzir para o Português, caso seu navegador seja o Google Chrome."
Tem esse Tutorial daqui também:
https://www.schultzgames.com/t4937-tutorial-metodo-simples-de-salvar-progresso-do-jogo-em-um-arquivo-separado#50683
Espero ter ajudado. :D
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
igorobm escreveu:Mano tava com essa dúvida ontem, eu assisti 2 videos que me ajudaram 100%igorobm escreveu:Teria como salvar todos os itens de um array? Digamos que vc tenha uma array com os objetos, assim poderia salvar todos os objetos e um só arquivo em vez de um arquivo para cada objeto que eu foce salvar???
1º e para Salvar o Json How to Save Data Using JSON in Unity (LitJSON).
2° e para Ler o Json How to Read JSON Data in Unity (LitJSON).
A vc vai conseguir salvar Um array e ler ele.
Fui olhar o github do litJson e está off, este método ainda continua funcionando?
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Assim:
Recomendo que veja: https://docs.unity3d.com/ScriptReference/WWW.html
- Código:
yield return www;
Debug.Log(www.text);
Recomendo que veja: https://docs.unity3d.com/ScriptReference/WWW.html
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
isto eu tenho gostaria de ler o texto e separar o que precisoSouris escreveu:Assim:
- Código:
yield return www;
Debug.Log(www.text);
Recomendo que veja: https://docs.unity3d.com/ScriptReference/WWW.html
- Código:
{
"Identidade": {
"Login": "nome.sobrenome",
"Nome": "NOME COMPLEMENTO",
"Cpf": "000.000.000.00",
"AlteracaoSenha": "2016-08-19T11:08:09.0584089-03:00",
"Coligadas": [
{
"Codigo": 3,
"Chapa": "121976",
"CodSecao": "01.04.08.03.12",
"Sessao": "BH, ES3, RH, SITE, TREINAMENTO",
"Funcao": "INSTRUTOR DE TREINAMENTO I",
"Situacao": "A",
"CentrosResultado": [
{
"Codigo": "3.71.120",
"Nome": "Cobrança"
}
]
}
]
},
"Status": 1,
}
preciso ler a informação de status e nome
Re: [TUTORIAL] Serialização - JSON
Simples, utilize o método Split, que é utilizado assim:
Ou seja, para você chamar ele, faça assim:
Enfim, tenta ae e traz resultados xD
- Código:
public static string Split(string sntg);
Ou seja, para você chamar ele, faça assim:
- Código:
string[] valores = www.text.Split(',');
Enfim, tenta ae e traz resultados xD
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
nao conheço é só isto mesmo?Souris escreveu:Simples, utilize o método Split, que é utilizado assim:
- Código:
public static string Split(string sntg);
Ou seja, para você chamar ele, faça assim:Daí você vai precisar usar o Split novamente, mas você sabe disto, não é?
- Código:
string[] valores = www.text.Split(',');
Enfim, tenta ae e traz resultados xD
esta dando a mensagem "must have a body because it is not marked abstract, extern, or partial"
Re: [TUTORIAL] Serialização - JSON
Bota um toString() entre o text e Split.
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Não é isto continua dando, teria algum exemplo? no serviço aqui não consigo fazer pesquisaSouris escreveu:Bota um toString() entre o text e Split.
Re: [TUTORIAL] Serialização - JSON
Pode mostrar o erro? Ou tenta apagar o código para ver se não é outro.
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Falta de atenção minha também o erro estava na declaração da variávelSouris escreveu:Pode mostrar o erro? Ou tenta apagar o código para ver se não é outro.
public static string Split;
string[] valores = www.text.Split(',');
Debug.Log(valores);
ta retornando Sytem.String[]
eu preciso colocar algum dados nos parenteses?
Re: [TUTORIAL] Serialização - JSON
Não amigo.. Não sei se você entendeu, o método Split não é uma variável que deve ser declarada.
Veja o Split aqui:
https://answers.unity.com/questions/286072/stringtrim-and-stringsplit.html
https://answers.unity.com/questions/672553/how-to-split-a-string-into-array.html
Veja o Split aqui:
https://answers.unity.com/questions/286072/stringtrim-and-stringsplit.html
https://answers.unity.com/questions/672553/how-to-split-a-string-into-array.html
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Entendi chegando em casa, vou pesquisar com mais calma, realmente ta dando o erro!
Re: [TUTORIAL] Serialização - JSON
Ok, espero que resolva.
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Consegui com JSON mesmo deu um pouquinho de trabalho mais funcionou!
vlw
vlw
Re: [TUTORIAL] Serialização - JSON
Segue o link -> http://www.mediafire.com/file/d6k1venftgyfddu/litJson.rarguimaraf escreveu:igorobm escreveu:Mano tava com essa dúvida ontem, eu assisti 2 videos que me ajudaram 100%igorobm escreveu:Teria como salvar todos os itens de um array? Digamos que vc tenha uma array com os objetos, assim poderia salvar todos os objetos e um só arquivo em vez de um arquivo para cada objeto que eu foce salvar???
1º e para Salvar o Json How to Save Data Using JSON in Unity (LitJSON).
2° e para Ler o Json How to Read JSON Data in Unity (LitJSON).
A vc vai conseguir salvar Um array e ler ele.
Fui olhar o github do litJson e está off, este método ainda continua funcionando?
igorobm- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 39
Idade : 27
Áreas de atuação : Discord -> 163979429742116864
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Link do litJson que estava off -> http://www.mediafire.com/file/d6k1venftgyfddu/litJson.rar/fileWeslley escreveu:Sim
igorobm- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 39
Idade : 27
Áreas de atuação : Discord -> 163979429742116864
Respeito as regras :
Re: [TUTORIAL] Serialização - JSON
Mas no caso como faço para ser um dos registros do json com base nesse codigo, ainda não entendi
paulocezarphp- Iniciante
- PONTOS : 1812
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Salvando e carregando dados com serialização (Parte 3)
» [TUTORIAL] Salvando e carregando dados com serialização (Parte 1)
» [TUTORIAL] Salvando e carregando dados com serialização (Parte 2)
» [TUTORIAL] Sistema de login com json
» [Duvida]Serialização de GameObjects Com Binary Formatter?
» [TUTORIAL] Salvando e carregando dados com serialização (Parte 1)
» [TUTORIAL] Salvando e carregando dados com serialização (Parte 2)
» [TUTORIAL] Sistema de login com json
» [Duvida]Serialização de GameObjects Com Binary Formatter?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos