Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Salvar el juego

Iniciado por rogerdv, Octubre 08, 2015, 08:23:30 PM

Tema anterior - Siguiente tema
Estoy iniciando algunas pruebas para entender el proceso de salvar el juego y me he encontrado algunos problemas. Pense que solo necesitaba declarar una clase como serializable para poderla guardar en un archivo, pero parece que hay cosas que no pueden serializarse, como las listas, etc. El caso es que las clases del jugador, los NPC, y otras, tienen listas o diccionarios, y además me percaté que dicha clase no guarda datos como la posición del jugador, porque eso está en el GameObject padre. La primera solucion que se me ocurrió fue crear otra clase que contendría la información a guardar, pero eso significa que por cada cosa que necesite almacenar, tendré que implementar una clase equivalente de almacenamiento.Agradecería cualquier consejo con respecto a este asunto. 

http://dsgp.blogspot.com">Divagaciones sobre programación y juegos



Yo me creo como tú una clase con todos los parámetros. La diferencia es que yo la serializo "a mano" utilizando la clase BinaryFormatter de System.IOEs compatible con mobile (Android probado) sin problemas. Con ella puedes serializar una clase o lo que quieras de manera individual. No lo he probado con una List pero no debería haber problemas.



yo serializo listas como si no costasen a xml...

Ya, me estudiare esto. El caso es que el error que me da es este:
SerializationException: Type UnityEngine.MonoBehaviour in assembly UnityEngine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null is not marked as serializable.
System.Runtime.Serialization.FormatterServices.GetSerializableMembers (System.Type type, StreamingContext context) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization/FormatterServices.cs:101)
System.Runtime.Serialization.Formatters.Binary.CodeGenerator.GenerateMetadataTypeInternal (System.Type type, StreamingContext context) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/CodeGenerator.cs:78)
System.Runtime.Serialization.Formatters.Binary.CodeGenerator.GenerateMetadataType (System.Type type, StreamingContext context) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/CodeGenerator.cs:64)
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.CreateMemberTypeMetadata (System.Type type) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:442)
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.GetObjectData (System.Object obj, System.Runtime.Serialization.Formatters.Binary.TypeMetadata& metadata, System.Object& data) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:430)
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObject (System.IO.BinaryWriter writer, Int64 id, System.Object obj) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:306)
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObjectInstance (System.IO.BinaryWriter writer, System.Object obj, Boolean isValueObject) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:293)
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteQueuedObjects (System.IO.BinaryWriter writer) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:271)
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObjectGraph (System.IO.BinaryWriter writer, System.Object obj, System.Runtime.Remoting.Messaging.Header[] headers) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:256)
Pensaba que las listas no eran serializables y si lo son, pero estoy rastreando que dato se me ha quedado sin marcar, o si tengo algun diccionario por ahi, pero no encuentro nada. 

http://dsgp.blogspot.com">Divagaciones sobre programación y juegos



PublicKeyToken=null is not marked as serializable.
Hay algo por allí no inicializado, no asignado, o a saber.

Etiquetas: