- Home /
Saving and loading array (/list) of integers locally
Hi,
Currently I've spend many hours on trying to figure something out that should be very simple to do. I'm trying to save and load multiple arrays, or lists, of integers locally. This tutorial: http://gamedevelopment.tutsplus.com/tutorials/how-to-save-and-load-your-players-progress-in-unity--cms-20934 helped me a lot, but for whatever reason I can't seem to implement it with arrays.
This is what I've currently made of it, but obviously it doesn't work: using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization.Formatters.Binary; using System.IO;
public static class SaveLoad {
public static List<int> list1 = new List<int>();
public static List<int> list2 = new List<int>();
//I want to have 50 lists (or arrays)
public static void Save(List<int> myList1, List<int> myList2) {
SaveLoad.list1.Add(myList1);
SaveLoad.list2.Add(myList2);
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create (Application.persistentDataPath + "/savedGames.gd");
bf.Serialize(file, SaveLoad.list1);
bf.Serialize(file, SaveLoad.list2);
file.Close();
}
public static void Load() {
if(File.Exists(Application.persistentDataPath + "/savedGames.gd")) {
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(Application.persistentDataPath + "/savedGames.gd", FileMode.Open);
SaveLoad.list1 = (List<int>)bf.Deserialize(file);
SaveLoad.list2 = (List<int>)bf.Deserialize(file);
file.Close();
}
}
}
Once that's working I would also like to know the proper way of using this through another C# script, but first things first :) .
Thanks in advance for your input!
I expected that the parameters myList1 and myList2 would be added to my savegames.gd file and I would be able to load them in again using the Load() function. However the outcome is that I get four errors when I hit play: Assets/Scripts/SaveLoad.cs(14,32): error CS1502: The best overloaded method match for System.Collections.Generic.List.Add(int)' has some invalid arguments Assets/Scripts/SaveLoad.cs(14,32): error CS1503: Argument
#1' cannot convert System.Collections.Generic.List' expression to type
int' Assets/Scripts/SaveLoad.cs(15,32): error CS1502: The best overloaded method match for System.Collections.Generic.List.Add(int)' has some invalid arguments Assets/Scripts/SaveLoad.cs(15,32): error CS1503: Argument
#1' cannot convert System.Collections.Generic.List' expression to type
int'
And the errors seem pretty clear, however I don't know how it should be done.
Answer by hexagonius · Mar 02, 2015 at 02:51 PM
List1 and List2 are lists of ints, not of int-lists. Instead of Add(), use =
Your answer
![](https://koobas.hobune.stream/wayback/20220613184745im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Serializing / deserializing large lists 0 Answers
Importing and exporting save files. 0 Answers
A node in a childnode? 1 Answer
Serializing a graph 2 Answers
How to prevent a list from being cleared at runtime? 2 Answers