Итак, я скачал ресурс для Unity, который называется "JSON. NET Для Unity", и у меня все получилось, но у меня проблема.
У меня есть разные классы и переменные, и я хочу хранить их, проблема в том, что я не знаю, как сохранить их в одном файле. У меня есть свой метод для каждой вещи, которую я хочу сохранить, но я не знаю, как сделать это тем же методом или заставить его записать в тот же файл.
Это один пример: в этом методе я сохраняю класс с именем World, и я получаю его из файла. У меня есть другие методы, такие как этот, который запрашивает разные вещи (список, переменная ...)
public void SaveWorld(World worldToSave)
{
SaveSystem.Init();
string json = JsonConvert.SerializeObject(worldToSave, Formatting.Indented, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
PreserveReferencesHandling = PreserveReferencesHandling.Objects
});
File.WriteAllText(SaveSystem.SAVE_FOLDER + "/Save.json", json);
}
public World LoadWorld()
{
World saveWorld = null;
if (File.Exists(SaveSystem.SAVE_FOLDER + "/Save.json"))
{
string saveString = File.ReadAllText(SaveSystem.SAVE_FOLDER + "/Save.json");
saveWorld = JsonConvert.DeserializeObject<World>(saveString, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
ReferenceLoopHandling = ReferenceLoopHandling.Serialize
});
}
return saveWorld;
}
Затем для сохранения я бы назвал это:
void Save()
{
saveLoadSystem.SaveWorld(worldHandler.World);
saveLoadSystem.SaveInstalledObjects(worldHandler.installedObjectList);
saveLoadSystem.SaveUnits(unitHandler.unitList);
}
Где saveLoadSystem это скрипт, который имеет все методы.
Спасибо
Редактировать: Используя Hacettepe Hesabı answer.
Я могу сохранить правильно, как он сказал, и сохранить класс, который содержит только int с именем numData и другой скрипт со списком целых чисел, я получаю это:
{
"$id": "1",
"numData": 2
}[
0,
1
]
Проблема в том, что при загрузке я получаю эту ошибку:
JsonReaderException: дополнительный текст встречается после завершения чтение JSON содержание: [. Путь '', строка 4, позиция 1.
Для загрузки Im используется следующий метод:
public DATA LoadData()
{
DATA saveData = null;
if (File.Exists(SaveSystem.SAVE_FOLDER + "/Save.json"))
{
string saveString = File.ReadAllText(SaveSystem.SAVE_FOLDER + "/Save.json");
saveData = JsonConvert.DeserializeObject<DATA>(saveString, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
ReferenceLoopHandling = ReferenceLoopHandling.Serialize
});
}
return saveData;
}