C# Сериализация для Unity в отношении целостности данных - PullRequest
0 голосов
/ 28 марта 2020

Грубый набросок моего текущего проекта.

Инструмент, который отслеживает данные для онлайн-игры. Основные сохраненные данные - это словарь (строка, список (MyClass)), который я сохраняю в постоянном пути данных (C: \ Users ... \ AppData ...).

Что я В настоящее время я делаю:
-Проверьте файл сохранения и попробуйте десериализовать данные в мой словарь
-Если файла нет, создайте один
-Сравните словарные ключи для списка загруженных строк (в настоящее время из GDocs, но может переключиться на JSON текстовый файл) и добавить новую пару значений ключа для любого, которого еще нет в словаре
-Сохранить данные

Я использовал двоичный форматер, но моя проблема это то, что, как я могу сказать, вы можете сериализовать и десериализовать только в блоках (один класс, одна запись / чтение на файл). Если некоторые данные повреждены / изменены / et c., Тогда bf просто говорит: «Я больше не знаю, как обрабатывать загрузку этих данных», и пользователь теряет все данные, которые были в этом файле.

Теперь, на самом деле, процент случаев, когда какой-то тупой пользователь каким-то образом находит и изменяет файл в AppData, будет чрезвычайно низким, но будет проще использовать JSON, записывая каждый экземпляр MyClass в Список словаря в строке JSON, так что я могу просто выполнить базовую проверку целостности c при загрузке, чтобы быть безопасным?

Если это вообще имеет значение, мой текущий файл сохранения для этого ( хотя есть еще немного данных, которые можно добавить из другой функции), это 5 КБ, поэтому я не особо беспокоюсь об оптимизации памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...