💾 Player Prefs Snapshots
Содержание
Player Prefs Snapshots - плагин для редактора Unity, который позволяет создавать сохранения, в которых записываются все значения PlayerPrefs, а после в любой момент возвращаться к одному из сохранённых состояний
Как пользоваться
Установите пакет, и откройте главное окно плагина через Tools->Player Prefs Snapshots в верхнем меню. По умолчанию там будут находиться демонстрационные сохранения, их можно удалить. Создавать свои сохранения можно через кнопку “плюс”. Создание сохранения запомнит все значения которые находятся в PlayerPrefs в текущий момент. При нажатии Load рядом с сохранением, текущие PlayerPrefs будут перезаписаны значениями из сохранения
Чтобы не открывать лишнее окно, можно загружать сохранения через контекстное меню на объекте:
обратите внимение, что папку где хранятся сохранения, можно поменять в конфигурации
Примеры использования
Упрощение тестирования
Гораздо проще тестировать приложение, когда чтобы проверить экран прохождения игры, не нужно вручную проходить 100 уровней. Можно создать сохранение на 99 уровне, и загружать его, чтобы в 1 клик дойти до экрана прохождения
Синхронизация между компьютерами или членами команды
Когда в команде появляется новый человек, или нужно открыть проект на другом ноутбуке, теперь не нужно играть в игру несколько часов, или редактировать данные вручную, чтобы воссоздать состояние где все части игры будут открыты. Можно создать одно или несколько сохранений “late progress”, и загружать их когда нужно увидеть поздние части игры
Тестирование при разработке
Например вы разрабатываете туториал, который должен появляться на 15м уровне игры. Чтобы его протестировать, нужно проверить что он появляется на 15 уровне, что он не появляется на 14 уровне, и что он не появляется второй раз. Для этого нужно дойти до 15го уровня, а если вдруг обнаружится какая-то проблема, то исправить её, очистить PlayerPrefs, и снова доходить до 15 уровня. С плагином можно просто создать сохранение в начале 14 уровня, и перепроверять туториал загружая это сохранение
Тестирование миграций данных
Этот пример появляется когда вы уже долго работаете над игрой, и делаете большое обновление для уже существующих игроков. В этом случае часто при первом запуске обновлённой версии нужно единоразово запустить миграцию, какой-то код, например чтобы обменять старую валюту которая было до обновления на новую, или открыть новые добавленные миры для старых пользователей. Тестирование этого кода обычно очень неудобно: нужно переключиться на старую версию в системе контроля версий, накопить там какой-то прогресс, переключить на новую, и вот один раз можно проверить миграцию. Если что-то пошло не так или нужно проверить другой вариант прогресса, приходится повторять процесс. Но с данным плагином это становится гораздо проще - нужно лишь создать несколько сохранений на старой версии, и на новой можно тестировать миграцию с них в один клик
Конфигурация
В файле PlayerPrefsSnapshots/Editor/PlayerPrefsSnapshotsConfig.cs
можно отредактировать некоторые настройки плагина. Там можно поменять папку, в которой хранятся сохранения, отключить авто-обновление окна, если оно замедляет Unity, или отключить Custom fields (пользовательские столбцы) в окне Player Prefs Snapshots
Custom fields
обратите внимение, что custom fields, или пользовательские столбцы, можно полностью отключить, задав CustomFieldsEnabled
в false
Custom Fields - столбцы, которые вы можете добавить в окно Player Prefs Snapshots, подходящие для конкретной игры. Примеры таких столбцов - “пройденно уровней”, “монеты”, или любой другой параметр который есть в вашей игре и хранится в данных. Чтоб добавить или отредактировать их, откройте файл PlayerPrefsSnapshots/Editor/PlayerPrefsSnapshotsConfig.cs
, и найдите массив CustomFields
. По умолчанию в нём находятся 3 демонстрационных столбца. Можете удалить или изменить их, чтобы они подходили под вашу игру.
Каждый такой столбец имеет 3 параметра:
- name - имя, будет показано вверху окна
- width - ширина в пикселях
- fieldGetter - лямбда функция, которая принимает сохранение, и должна вернуть строку, которая будет показана в списке сохранений в окне плагина
Например такой код описывает столбец, который отображает строку из PlayerPrefs:
new PlayerPrefsCustomField("Player name", 100, prefs => prefs.GetString("playerName"))
Можно отформатировать какой-то параметр из PlayerPrefs:
new PlayerPrefsCustomField("Tutor", 70, prefs =>
prefs.GetInt("tutorPassed") == 1 ? "Passed" : "Not passed")
Или даже написать более сложную функцию, которая считывает значения нескольких ключей из PlayerPrefs:
new PlayerPrefsCustomField("Level", 70, prefs =>
{
int level = 0;
for (int i = 0; i < 100; i++)
{
if (prefs.GetInt($"Level{i}Passed") == 1) level++;
}
return level.ToString(CultureInfo.InvariantCulture);
})
Окно с тремя вышеприведёнными столбцами может выглядеть так:
Демо игра
В папке PlayerPrefsSnapshots/Example
настроена демо-сцена, с простым клоном Cookie Clicker и с сохранением данных в PlayerPrefs. С данными этой сцены создано несколько сохранений в разных состояниях. На примере этих сохранений и игры можно разобраться как работает плагин. Можете спокойно удалять папку Example и демонстрационные сохранения, если они вам больше не нужны