Salvar Dados Binários no Servidor e Reabrir em jogo - Unity
Página 1 de 1
Salvar Dados Binários no Servidor e Reabrir em jogo - Unity
Fala galera!
Se possível me ajudem em um problema aqui com Unity/C#.
1) Eu tenho uma classe chamada DataSave, nela armazeno tudo que quero salvar do jogo.
2) Depois salvo essa classe em um arquivo local binário .dat e envio uma cópia para o servidor (para o jogador ter acesso e qualquer maquina).
3) Quando o jogo e reiniciado, o sistema baixa o arquivo DataSaveem formato byte[] do servidor, converto para o tipo de arquivo .dat e substitui o arquivo local atualizando as informações do jogo.
Ocorre que não consigo abrir o arquivo baixado e recarregá-lo na classe DataSave. Sempre ocorre esse erro "InvalidCastException: Specified cast is not valid.
"
Acredito que seja porque o arquivo vem do servidor em formato byte[] e quando converto para binário .dat o tipo de classe DataSave se perde. Alguém saberia me ajudar nisso?
Se possível me ajudem em um problema aqui com Unity/C#.
1) Eu tenho uma classe chamada DataSave, nela armazeno tudo que quero salvar do jogo.
2) Depois salvo essa classe em um arquivo local binário .dat e envio uma cópia para o servidor (para o jogador ter acesso e qualquer maquina).
3) Quando o jogo e reiniciado, o sistema baixa o arquivo DataSaveem formato byte[] do servidor, converto para o tipo de arquivo .dat e substitui o arquivo local atualizando as informações do jogo.
Ocorre que não consigo abrir o arquivo baixado e recarregá-lo na classe DataSave. Sempre ocorre esse erro "InvalidCastException: Specified cast is not valid.
"
Acredito que seja porque o arquivo vem do servidor em formato byte[] e quando converto para binário .dat o tipo de classe DataSave se perde. Alguém saberia me ajudar nisso?
- Código:
//baixa o arquivo Data do servidor.
public IEnumerator GetFileDadosServidor()
{
Debug.Log("Entrou no GetFileDados!");
file = new byte[0];
UnityWebRequest www = UnityWebRequest.Get(urlData);
yield return www.SendWebRequest();
if (www.isNetworkError)
{
ManageUI.Instancia.AvisosBar(www.error);
}
else
{
file = www.downloadHandler.data;
//Salva o arquivo na memória do app.
LoadOne();
}
}
//Salva o file bite[] baixado do servidor em um arquivo binario para ser lido e convertido na class DataSave.
public void LoadOne()
{
string savePath = "/" + ManageGame.Instancia.prefs.Nickname + "Dados.dat";
BinaryFormatter formatter = new BinaryFormatter();
FileStream stream = new FileStream(string.Concat(Application.persistentDataPath, savePath), FileMode.OpenOrCreate, FileAccess.Write);
formatter.Serialize(stream, file);
stream.Close();
Debug.Log("Arquivo Gerado!");
//Converte o arquvi devolta para a class.
LoadTwo();
}
//Ler o arquivo binário e carrega na class.
public void LoadTwo()
{
string savePath = "/" + ManageGame.Instancia.prefs.Nickname + "Dados.dat";
if (File.Exists(string.Concat(Application.persistentDataPath, savePath)))
{
BinaryFormatter formatter = new BinaryFormatter();
FileStream stream = new FileStream(string.Concat(Application.persistentDataPath, savePath), FileMode.Open, FileAccess.Read);
getData = (DataSave)formatter.Deserialize(stream);
stream.Close();
}
}
CleiMac- Iniciante
- PONTOS : 1509
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Salvar e carregar dados na Unity de objetos prefabs sem sobrescrever os dad
» Salvar dados unity
» unity - erro ao salvar dados
» Unity - Salvar os Dados do Jogador Online
» Salvar dados do jogo utilizando o login da google play games
» Salvar dados unity
» unity - erro ao salvar dados
» Unity - Salvar os Dados do Jogador Online
» Salvar dados do jogo utilizando o login da google play games
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos