Problem to add on List (Serializable class)
Hi!
I'm making a Save&Load class and using a private class that will be serializable. Occurs that I can't add Vector2 values in a list<> that is in this serializable class. Follow the code:
public void Save() {
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create (Application.persistentDataPath + "/savedGames.data");
SaveManager saver = new SaveManager();
saver.keys.Add(new Vector2(valueX,valueY);
bf.Serialize(file, saver);
file.Close();
}
[Serializable]
class SaveManager
{
public List<Vector2> keys;
}
I have made the save system with a simple value (int) to test, and works. But, with List unity says: "NullReferenceException: Object reference not set to an instance of an object"
Maybe is a nobie think. Please, help me! :)
Obs.: valueX and valueY is just for exemplo.
Answer by jgodfrey · Mar 30, 2016 at 10:47 PM
In your SaveManager class, you never created a List instance for the keys property. That should probably be:
public List<Vector2> keys = new List<Vector2>();
Well, a tried this. But, received this message: "SerializationException: Type UnityEngine.Vector2 is not marked as Serializable"
Because of that, I tried this:
[SerializeField]
public List<Vector2> keys = new List<Vector2>();
Doens't work yet! :| Vector2 is serializable?
Answer by BergMarques · Mar 31, 2016 at 04:01 AM
Ok. Solved!
It seens that Unity doesn't serialize Vector2, so I used two lists of float to works.
class SaveManager
{
public List<float> keysTime = new List<float>();
public List<float> keysValue = new List<float>();
}
Thanks for the help @jgodfrey!
Your answer
Follow this Question
Related Questions
Why Does My Saved Data Not Load? 0 Answers
A Little Help With Player Prefs 0 Answers
Help! my list won't remove its elements... 0 Answers
How can I save this objects ? 0 Answers
Saving And Loading List error 1 Answer