Сохранение данных в Unity: PlayerPrefs, JSON, сериализация

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

Unityplayerprefsjson

В Unity есть 3 популярных подхода к сохранению данных: PlayerPrefs, JSON и сериализация. У каждого — своя задача. Если выбрать инструмент неправильно, можно получить потерю прогресса, неудобную поддержку или проблемы с безопасностью.

PlayerPrefs

Подходит для простых данных:

  • громкость
  • язык
  • настройки графики
  • рекорд игрока

Что важно знать:

  • хранит только int, float, string
  • данные сохраняются локально
  • не подходит для сложных структур: инвентарь, квесты, состояние мира
  • это не защита от редактирования пользователем

Пример:

PlayerPrefs.SetInt("Coins", 150);
PlayerPrefs.SetFloat("MusicVolume", 0.8f);
PlayerPrefs.Save();

👉 Используйте PlayerPrefs только для небольших и некритичных данных.

JSON

Хороший вариант для сохранения состояния игры в файл. Подходит для:

  • профиля игрока
  • инвентаря
  • прогресса по уровням
  • параметров персонажа

Плюсы:

  • читаемый формат
  • удобно отлаживать
  • легко расширять
  • можно хранить в Application.persistentDataPath

Пример логики:

  1. Создаёте класс данных
  2. Преобразуете объект в JSON
  3. Сохраняете строку в файл
  4. При запуске загружаете и десериализуете

Пример:

[System.Serializable]
public class SaveData
{
    public int coins;
    public int level;
}

string json = JsonUtility.ToJson(data);
File.WriteAllText(path, json);

Минусы:

  • JSON легко открыть и изменить
  • JsonUtility ограничен по сравнению с Newtonsoft JSON
  • нужна ручная работа с версиями сохранений

Сериализация

Это базовый механизм преобразования объекта в формат для сохранения или передачи. В Unity сериализация используется в инспекторе, а также в системах сохранения.

Часто под сериализацией в контексте save/load имеют в виду:

  • JSON-сериализацию
  • бинарную сериализацию
  • кастомные форматы

Что учитывать:

  • бинарный формат компактнее, но хуже для отладки
  • устаревшие подходы вроде BinaryFormatter лучше не использовать из-за рисков безопасности
  • для продакшена полезно продумывать версионирование данных заранее

Что выбрать? 🤔

  • PlayerPrefs — для настроек и мелких значений
  • JSON — для большинства save-систем в инди и мобильных играх
  • кастомная сериализация — если нужны производительность, защита или сложная структура данных

Практические советы 🛠️

  • разделяйте настройки и игровые сохранения
  • добавляйте поле saveVersion
  • делайте резервную копию сейва
  • не храните критичные данные только на клиенте
  • тестируйте загрузку после обновления игры
  • шифрование полезно, но не заменяет серверную проверку

Итог:

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

📌 Ниже — мягкая рекомендация: загляните в подборку каналов про IT, там много полезного по Unity, разработке игр и архитектуре приложений.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же