Hi, I already searched google but I couldn't find an answer. Is it possible to save all variables of a custom class in unity script (on iOS)? So if I have Code (csharp): var myObject : CustomClass; and Code (csharp): class CustomClass {var variable1 : int; var variable2 : boolean; var variable3 : string} I want to save it like this Code (csharp): PlayerPrefs.Set(myObject); but as far as I know PlayerPrefs only supports ints and I'm not sure if PlayerPrefsX supports Classes or Strings. I hope somebody can help me out. Best regards, Fred
PlayerPrefs only supports built-in system types. If you need to save your class you need to write your own. Or you can try XML serialization into an XML file. It is really simple Code (csharp): var serializer = new XmlSerializer(typeof(MyClass)); var writer = new StreamWriter("data.xml"); serializer.Serialize(writer, myClassInstance); writer.Close();
Thanks. That already looks pretty easy. But your example only shows how to save. How would I load those score? And are the XmlSerializer saved even when the app is closed?
Yes, it actually saves to a file not in memory so they will persist even after closing the game. To load the file just do the opposite Code (csharp): var serializer = new XmlSerializer(typeof(MyClass)); var reader = new StreamReader("data.xml"); var data = (MyClass) serializer.Deserialize(reader); // only difference reader.Close();
Ahh! Thanks!!!. So I wrote It like that now Code (csharp): function Save() { var serializer : XmlSerializer = new XmlSerializer(typeof(PlayerScores)); var writer : System.IO.StreamWriter = new System.IO.StreamWriter("data.xml"); serializer.Serialize(writer, player); writer.Close(); } function Load() { var serializer : XmlSerializer = new XmlSerializer(typeof(PlayerScores)); var reader : System.IO.StreamReader = new System.IO.StreamReader("data.xml"); player = serializer.Deserialize(reader); // only difference reader.Close(); }