Jump to content
UnitySpain
zelleGames

ANDROID FICHEROS BINARIOS DESAPARECIDOS

Recommended Posts

Buenas gente,

 

Me ha ocurrido un problema gordo, estoy ya apunto de terminar el ultimo proyecto en el que ando metido para android y no se porque de repente se me ha borrado el progreso del juego...

Estoy haciendo los ultimos testeos del juego, es un juego bastante largo y hoy iba a seguir testeando y resulta que esta todo a 0 como si acabase de instalar el juego ?¿?¿?¿

Me preocupa porque es una jodienda grande para los usuarios, como se les borre toda la partida y tengan que volver a empezar de nuevo me van a mandar a la mierda, jajaja

Guardo los datos en ficheros binarios, recuerdo que ayer el movil dejo de detectarme la SIM la saque y se me renicio el movil, he pensado que fue debido a eso, pero he vuelto a hacer lo mismo y los datos continuan Ok. Ademas tengo otro juego y ese sigue ok el progreso.

 

¿Os ha pasado alguna vez? ¿Sabeis a que ha podido deberse?

 

He buscado en internet sin exito....

 

Muchas gracias por adelantado!!

Share this post


Link to post
Share on other sites

O ese móvil merece unas buenas eternas vacaciones o corrompes los ficheros en algún momento (abrir, no cerrar, etc.)

Share this post


Link to post
Share on other sites
4 minutes ago, iRobb said:

O ese móvil merece unas buenas eternas vacaciones o corrompes los ficheros en algún momento (abrir, no cerrar, etc.)

Jajaja, el movil tiene unos 4 años, pero no va  mal del todo. Mi ética/dinero no me deja comprarme uno nuevo hasta que no muera este, quizas se me caiga "accidentalmente"...

Algo he leido de ficheros corruptos, pero si se hubiesen corrumpido seguirian guardados aunque corruptos ¿no? es que he buscado en el directorio donde se guardan y estaba vacio...

Guardo y cargo de la siguiente manera:

 

public static void SavePlayer(SaveLoad saveLoad){
		
		
		BinaryFormatter bf = new BinaryFormatter();

        //GUARDA PLAYER

        FileStream stream = new FileStream(Application.persistentDataPath + "/player.sav", FileMode.Create);

        SavePlayerData dataController = new SavePlayerData(saveLoad);

        bf.Serialize(stream, dataController);
        stream.Close();
        //Debug.Log("SE GUARDA PLAYER OK");
		
		
	}
	
	public static List<PlayerData> LoadPlayer()
    {
        if (File.Exists(Application.persistentDataPath + "/player.sav"))
        {
            BinaryFormatter bf = new BinaryFormatter();
            FileStream stream = new FileStream(Application.persistentDataPath + "/player.sav", FileMode.Open);

            SavePlayerData data = bf.Deserialize(stream) as SavePlayerData;

            stream.Close();

            return data.playerList;
        }
        else
        {


            Debug.LogError("FICHERO NO EXISTE LOAD PLAYER");
            return null;
        }

 

Muchas gracias por contestar seguire investigando el tema de los ficheros corruptos.

 

 

Share this post


Link to post
Share on other sites

Digamos que, el fichero existe, da error al abrirlo (por qué ya estaba abierto o a saber), se serializa a nulo y lo devuelves como bueno el playerList. Luego esa class la pasas y la guardas. Falta mucho control de errores.

Como corruptos no me refiero al SO, me refiero a hacer procesos como éste.

Share this post


Link to post
Share on other sites

Con lo que dices que falta mucho control de errores entiendo que te refieres al codigo que he subido.

Lo cogi de internet la verdad, investigare para que sea mas robusto y a prueba de errores.

 

Gracias de nuevo!!

Share this post


Link to post
Share on other sites

Normalmente el código que circula como ejemplos por internet no contiene control de errores, ya que se centran en la funcionalidad de la tarea a explicar. Un vídeo rápido sobre try/catch que en los procesos de I/O es importante.

 

Share this post


Link to post
Share on other sites

perfecto le echo un ojo.

Tambien estoy mirando en la web de unity y ya de primeras veo que usan:

 

FileMode.OpenOrCreate cuando yo usaba FileMode.Create,

Ya me parecia raro que se crease siempre un fichero cuando hacia Save aunque el fichero ya existiese...

 

Lo único que no podre saber si fue por esto el error que me dio, ya que no es un error que pueda repetir.

Pero aplicare todo esto para evitar que pueda volver a ocurrir.

 

Mil gracias!

Share this post


Link to post
Share on other sites

×
×
  • Create New...