Наконец-то, отчет по карточкам:
- Сделал систему сохранения.
- Добавил сохранения пройденных уровней.
Кажется система получилась немного извращенной, но, как говорится: я художник, я так вижу. Сохранение пока работает на PlayerPrefs.
Есть интерфейс: IStorage. Он умеет сохранять и отдавать строковый ключ хранилища. Каждое хранилище наследуется от интерфейса. Хранилище выполняет функцию хранения одного компонента. Например, монеты, прогресс и др.
- В хранилище происходит валидация данных. Сохранить данные можно напрямую, обратившись к хранилищу. Хранилище регистрирутся в DI в зависимости от используемого контекста. Например, прогресс регистрируется в проджект контексте.
Есть StorageController. Он регистрируется в каждом контексте отдельно (кроме проджекта). Он с помощью DI собирает в себе все хранилища в словарь по строковому ключу. Из него можно дернуть какое-то определенное хранилище или все хранилища сразу.
Это будет нужно при выходе из игры.
Пока сохранения работают на PlayerPrefs, то сохранение происходит в самих хранилищах. В дальнейшем можно будет доработать, чтобы сохранения шли только в контроллере и собирались из всех хранилищ в один Json файл, например.
Как-то так. Пишите ваши мысли об этой системе