Hi, I don’t know what’s wrong. On save it saves it but on load it loads it only in string.
class list:
public class BuildingData
{
public int placeID;
public float upgradePrice;
public int upgradeLevel;
public int happinessValue;
public float peoplePerSec;
public string buildingName;
public int buildingPrice;
public int buildingLevel;
public float buildingProduction;
public int buildingID;
}
code:
void Start(){
Load<BuildingData>("key1");
}
public void AutoSave(){
Save<BuildingData>("key1", buildingData);
}
public static void Save<BuildingData>(string key, List<BuildingData> objs){
JSONArray jsonArray = new JSONArray();
foreach(BuildingData obj in objs){
try{
string jsonObjString = JsonUtility.ToJson(obj);
jsonArray.Add(JSON.Parse(jsonObjString));
Debug.Log(objs);
}
catch(Exception e){
}
}
PlayerPrefs.SetString(key, jsonArray.ToString());
Debug.Log("Saved" + jsonArray.ToString());
}
public static List<BuildingData> Load<BuildingData>(string key){
List<BuildingData> objs = new List<BuildingData>();
string jsonString = PlayerPrefs.GetString(key, "[]");
Debug.Log("LOAD String " + jsonString);
try{
JSONArray jsonArr = (JSONArray)JSON.Parse(jsonString);
Debug.Log("LOAD Array " + jsonArr);
foreach(JSONObject jsonObj in jsonArr){
objs.Add(JsonUtility.FromJson<BuildingData>(jsonObj.ToString()));
Debug.Log("LOAD Object " + jsonObj);
}
}
catch(Exception e){
}
return objs;
}
}