using System; using System.Collections.Generic; using System.IO; using System.Linq; using UnityEngine; public static class FileData { public static void SaveToSAV(List toSave, string filename) { Debug.Log(GetPath(filename)); string content = JsonHelper.ToJson(toSave.ToArray()); WriteFile(GetPath(filename), content); } public static void SaveToSAV(T toSave, string filename) { string content = JsonUtility.ToJson(toSave); WriteFile(GetPath(filename), content); } public static List ReadListFromSAV(string filename) { string content = ReadFile(GetPath(filename)); if (string.IsNullOrEmpty(content) || content == "{}") { return new List(); } List res = JsonHelper.FromJson(content).ToList(); return res; } public static T ReadFromSAV(string filename) { string content = ReadFile(GetPath(filename)); if (string.IsNullOrEmpty(content) || content == "{}") { return default(T); } T res = JsonUtility.FromJson(content); return res; } private static string GetPath(string filename) { Directory.CreateDirectory(Application.persistentDataPath + "/Save/"); return Application.persistentDataPath + "/Save/" + filename + ".sav"; } private static void WriteFile(string path, string content) { FileStream fileStream = new FileStream(path, FileMode.Create); using (StreamWriter writer = new StreamWriter(fileStream)) { writer.Write(content); } } private static string ReadFile(string path) { if (File.Exists(path)) { using (StreamReader reader = new StreamReader(path)) { string content = reader.ReadToEnd(); return content; } } return ""; } } public static class JsonHelper { public static T[] FromJson(string json) { Wrapper wrapper = JsonUtility.FromJson>(json); return wrapper.Items; } public static string ToJson(T[] array) { Wrapper wrapper = new Wrapper(); wrapper.Items = array; return JsonUtility.ToJson(wrapper); } public static string ToJson(T[] array, bool prettyPrint) { Wrapper wrapper = new Wrapper(); wrapper.Items = array; return JsonUtility.ToJson(wrapper, prettyPrint); } [Serializable] private class Wrapper { public T[] Items; } }