save custom class

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 var myObject : CustomClass;

and class CustomClass {var variable1 : int; var variable2 : boolean; var variable3 : string}

I want to save it like this 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

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

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

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();
}