Как правильно сохранять данные в игре unity

У меня есть класс в котором сделана сериализация и десириализация через json. Как мне сохранить все нужные данные в один файл? Нужно создать класс где они все будут хранится? Но как их инициализировать, а после передавать в нужные классы при загрузке? Не совсем понимаю. Буду рад любой помощи!


Ответы (1 шт):

Автор решения: Yaroslav

Если ты сериализуешь класс с помощью JsonUtility, то это варка каши из топора, потому что сериализовать нужно только данные, иначе непонятно как построить архитектуру загруски. Познакомся с паттерном Memento.


Что касается в один файл... думаю из самого вопроса ясно, что должен быть обработчик данных, который при добавлении сущности, проверяет если что для него загрузить по его ключу, а по команде сохранения создает список [ключ, json].

[Serializable]
public struct MementoData 
{
   public string key;
   public string json;
}

// Можно сериализовать/десиарилизовать с помощью JsonUtility все данные
[Serializable]
public struct MementoDataCollection 
{
   public MementoData[] data;
}

Все сущности само собой под интерфесом:

public interface MementoTarget
{
   public string Key { get; }

   public string void GetSaveData ();
   public void LoadData (string json);
}
→ Ссылка