Как сохранить разные классы в одном файле - PullRequest
0 голосов
/ 24 января 2020

Итак, я скачал ресурс для 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;
}

1 Ответ

2 голосов
/ 24 января 2020

Чтобы сохранить их все в одном файле, вы можете иметь три экземпляра в одном классе, а затем сохранить этот класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...