Как сохранить / управлять ходом игры на мобильных устройствах (Unity)? - PullRequest
0 голосов
/ 25 сентября 2018

В настоящее время я сохраняю прогресс игры в файле в формате JSON.Каждый раз, когда игрок завершает уровень, новая запись будет добавлена ​​в файл JSON, как следует "level_N":{"score":234,"points":22}, , этот файл будет сохранен в конце завершения уровня.Рассмотрим сценарий, в котором проигрыватель достигает уровня 2345 или около того. В этом случае сохранение в файл на завершенном уровне занимает значительно больше времени на некоторых мобильных устройствах.Как управлять сохранением такого большого количества данных?я должен использовать некоторые другие форматы?или мне нужно сохранить детали каждого уровня в отдельном файле?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

PlayerPrefs - это всегда хороший выбор для локального управления данными, но если вы планируете добавить онлайн-функции в свою игру, я рекомендую вам посмотреть База данных Firebase Realtime для синхронизацииДанные JSON с автономной поддержкой.И пусть firebase управляет проблемами производительности на мобильных устройствах. Здесь вы можете увидеть, как легко интегрировать базу данных Firebase в ваш проект Unity.

0 голосов
/ 01 октября 2018

PlayerPrefs - самый простой способ сохранить данные.Он предназначен для обработки базовых типов данных (int, string, float) и работает как словарь, поэтому вы можете просто сохранять строки JSON в виде пар ключ-значение.И нет ограничений по размеру для iOS или Android (в веб-плеере он ограничен 1 МБ).

// read
PlayerPrefs.GetString(string key, string value);

// write
PlayerPrefs.SetString(string key, string value);

// load and update
const saveKey = "level_N";
Private void SaveProgress() 
{
    string saveValue = "your JSON string"; 
    string loadValue = PlayerPrefs.GetString(saveKey); 
    if (!saveValue.Equals(loadValue)) 
    {
        PlayerPrefs.SetString(saveKey, saveValue); 
        PlayerPrefs.Save();
    }
}

Данные пользователя будут автоматически записываться на диск во время OnApplicationQuit (), но вы можете использовать PlayerPrefs.Save()в случае сбоя вашей игры.

Сказав это, сохранение большого количества данных в PlayerPrefs на мобильных устройствах может быть медленным.Поэтому, если вы хотите улучшить производительность игры или вам нужно больше места, вы можете использовать Application.persistentDataPath для сохранения данных в общедоступном каталоге на устройстве.Как и в PlayerPrefs, данные не очищаются при обновлении приложения.

FileStream file = File.Open(Application.persistentDataPath + "/gameInfo.dat", FileMode.Open);
0 голосов
/ 25 сентября 2018

Вы можете использовать класс PlayerPrefs для сохранения и сохранения локальных данных.
В вашем случае вы можете перерезать свой JSON в строку, а затем вызвать PlayerPrefs.SetString для сохранения / PlayerPrefs.GetString для получения.

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