Как сделать сохранение unity?
Unity, одиночная учебная игра на компьютере, один числовой рекорд. Нужно сохранить лучший счёт после завершения раунда и прочитать его при следующем запуске приложения.
Компьютеры и связь
Развлечения
Нейросети, ИИ
Животные и питомцы
Unity, одиночная учебная игра на компьютере, один числовой рекорд. Нужно сохранить лучший счёт после завершения раунда и прочитать его при следующем запуске приложения.
Для одного локального целого рекорда подойдёт PlayerPrefs. Он хранит простые значения между запусками приложения. Это удобное учебное решение, если от данных не требуется защита от редактирования пользователем.
При старте прочитайте значение с запасным нулём:
int best = PlayerPrefs.GetInt("BestScore", 0);
Строка BestScore является именем записи. Используйте одно и то же написание при чтении и сохранении, иначе получите две разные записи.
if (score > best)
{
best = score;
PlayerPrefs.SetInt("BestScore", best);
PlayerPrefs.Save();
}
Здесь score уже содержит результат вашего раунда. Фрагмент вставляется в обработчик завершения, а не выполняется постоянно в Update.
Не вызывайте Save каждый кадр. Запись на диск может давать задержку, поэтому завершение раунда является понятным моментом сохранения. Отдельно проверьте повторный запуск собранной игры, а не только обновление текста на экране.
Если число сбрасывается, проверьте одинаковое имя записи, отсутствие кода очистки и неизменность параметров приложения, от которых зависит место хранения. Редактор и готовая сборка могут использовать разные расположения данных.
PlayerPrefs не шифрует значения и не является защищённой таблицей результатов. Для сетевого рейтинга нельзя доверять присланному клиентом рекорду без проверки. Для большого сохранения мира с предметами и несколькими слотами потребуется другая структура хранения.
Запись
Для простого рекорда используйте PlayerPrefs.SetInt("BestScore", best) после сравнения нового счёта со старым. В конце раунда вызовите PlayerPrefs.Save(), чтобы записать изменения.
Чтение
При следующем запуске получите int best = PlayerPrefs.GetInt("BestScore", 0);. Ноль будет использован, если записи ещё нет. Имя BestScore должно точно совпадать в обоих местах.
Проверка
Закройте и снова запустите собранную игру. Проверяйте сохранённый рекорд, а не только число, оставшееся в памяти компонента. Save не нужно вызывать каждый кадр. PlayerPrefs хранит простые локальные значения без шифрования, поэтому подходит для учебного рекорда, но не для доверенного сетевого рейтинга или секретов.
Пример чтения: int best = PlayerPrefs.GetInt("BestScore", 0);. Когда score превысил best, запишите новый рекорд через PlayerPrefs.SetInt("BestScore", score) и вызовите PlayerPrefs.Save() в конце раунда. При следующем запуске читайте то же имя. Это локальное нешифрованное сохранение простого числа, поэтому доверенный сетевой рейтинг так не защищают.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
4o-mini
4o-mini
Как сделать сохранение unity?
Для одного локального целого рекорда подойдёт PlayerPrefs. Он хранит простые значения между запусками приложения. Это удобное учебное решение, если от данных не требуется защита от редактирования пользователем.
При старте прочитайте значение с запасным нулём:
Строка BestScore является именем записи. Используйте одно и то же написание при чтении и сохранении, иначе получите две разные записи.
Здесь score уже содержит результат вашего раунда. Фрагмент вставляется в обработчик завершения, а не выполняется постоянно в Update.
Не вызывайте Save каждый кадр. Запись на диск может давать задержку, поэтому завершение раунда является понятным моментом сохранения. Отдельно проверьте повторный запуск собранной игры, а не только обновление текста на экране.
Если число сбрасывается, проверьте одинаковое имя записи, отсутствие кода очистки и неизменность параметров приложения, от которых зависит место хранения. Редактор и готовая сборка могут использовать разные расположения данных.
PlayerPrefs не шифрует значения и не является защищённой таблицей результатов. Для сетевого рейтинга нельзя доверять присланному клиентом рекорду без проверки. Для большого сохранения мира с предметами и несколькими слотами потребуется другая структура хранения.