Современное хранение игрового прогресса в контексте Unity
Современное хранение игрового прогресса в контексте Unity

Вроде бы в интернете и так много контента по этой теме, но я до сих пор часто встречаю вопросы на тему сохранения прогресса. Обычно все хотят получить быстрое готовое решение для своих текущих проблем и не разбираться с их сутью. Многие материалы в сети это и дают – конкретные сухие простые решения, которые ломаются о будущий внезапно изменившийся…

1818
11
11

А как же сохранение прогресса в .ini файле?)

Да хоть в `.жпг` 😁

Это всё относится к работе с файловой системой (пример с FileSystemDataStorage). Название или целый путь до файла — это ключ, по которому происходит запись.

Сформированный путь до файла может храниться как готовый ключ в KeysProvider (типа "Game/Save/Data.ini").

Но если помимо этого хранилища в проекте используются другие, то скорее всего ключ будет иметь укороченный формат (типа "Data"), и тогда для реализации с файловой системой потребуется ключ как-то декорировать, чтобы получить полный путь.

Декорировать нужно как: префиксом к ключу (корневая директория) и постфиксом (расширение файла).

Это можно сделать в самой FileSystemDataStorage (см. метод GetFilePath).

Или наделать декораторов для IKeysProvider (пример с KeysProviderPrefixDecorator).

Сложность итогового решения зависит от того, насколько гибкое и разнообразное поведение нужно иметь в проекте. Чем меньше гибкости требуется, тем меньше необходимость во всяких избыточных абстракциях, декораторах и сущностях.

1