Наконец-то, отчет по карточкам:

  • Сделал систему сохранения.
  • Добавил сохранения пройденных уровней.

Кажется система получилась немного извращенной, но, как говорится: я художник, я так вижу. Сохранение пока работает на PlayerPrefs.

Есть интерфейс: IStorage. Он умеет сохранять и отдавать строковый ключ хранилища. Каждое хранилище наследуется от интерфейса. Хранилище выполняет функцию хранения одного компонента. Например, монеты, прогресс и др.

  • В хранилище происходит валидация данных. Сохранить данные можно напрямую, обратившись к хранилищу. Хранилище регистрирутся в DI в зависимости от используемого контекста. Например, прогресс регистрируется в проджект контексте.

Есть StorageController. Он регистрируется в каждом контексте отдельно (кроме проджекта). Он с помощью DI собирает в себе все хранилища в словарь по строковому ключу. Из него можно дернуть какое-то определенное хранилище или все хранилища сразу.

Это будет нужно при выходе из игры.

Пока сохранения работают на PlayerPrefs, то сохранение происходит в самих хранилищах. В дальнейшем можно будет доработать, чтобы сохранения шли только в контроллере и собирались из всех хранилищ в один Json файл, например.

Как-то так. Пишите ваши мысли об этой системе