Как сохранить данные вашего класса в единстве?
У меня есть приложение, которое использует некоторые файлы сохранения и загрузки, и они сериализуются. Я указал путь как Application.persistandDataPath
в скрипте Unity C # для сохранения и загрузки некоторых данных. Это работает в режиме edito, но не в устройствах Android.
Я также изменил " ProjectSettings -> Другие настройки -> Разрешение на запись " с внутренний на внешнийSD-карта . Но ничего не изменилось.
Мое приложение не сохраняет или загружает данные в Android. Даже, андроид спрашивает у меня разрешения на запись данных на устройстве, но ничего не меняется ..
У кого-нибудь есть такая же проблема? Мне нужна помощь, я застрял с моим проектом. Или есть ли лучший способ сохранить файл или класс, который зашифрован и работает на устройствах Android? (Я не знаю, это может быть похоже на использование файла json, но он зашифрован и т. Д.)
PS: когда я открываю папку в Windows для Application.persistandDataPath
, я вижу, что файл успешно создан, и я вижу файл somedata.dat существует.
Пример кода проекта:
СПОСОБ СОХРАНЕНИЯ:
public void Save()
{
FileStream file = null;
string path = Application.persistentDataPath + "/" + "GameFile.dat";
try
{
BinaryFormatter bf = new BinaryFormatter();
file = File.Create(path);
if (fileData != null)
{
fileData.SetHighscore(highScore);
fileData.SetIsGameStartedFirstTime(isGameStartedFirstTime);
fileData.IsMusicOn(isMusicOn);
bf.Serialize(file, fileData);
}
}
catch (Exception e)
{
}
finally
{
if (file != null)
{
file.Close();
}
}
}
ЗАГРУЗКАМЕТОД:
public void Load()
{
FileStream file = null;
string path = Application.persistentDataPath + "/" + "GameFile.dat";
try
{
BinaryFormatter bf = new BinaryFormatter();
file = File.Open(path, FileMode.Open);
fileData= (GameFile)bf.Deserialize(file);
}
catch (Exception e)
{
}
finally
{
if (file != null)
{
file.Close();
}
}
}
Пример класса данных GameFile
class GameFile
{
private bool isGameStartedFirstTime;
private int highScore;
private bool isMusicOn;
// Also setters and getters here..
}
Редактировать: было предложено использовать " Path.Combine (Application.persistentDataPath, "GameFile.dat");"вместо моего кода. Я применил это. Теперь, если я играю в игру и временно закрываю ее, нажимая среднюю кнопку на устройствах Android и открывая игру, она работает. Но работает временно, как я уже говорил. Потому что, если я полностью закрываю игру, удаляя ее из ОЗУ (нажав левую кнопку и создавая приложения на устройствах Android), она снова не работает и не запоминает мои сохраненные данные. Я предполагаю, что мы находимся в прогрессе, но все еще не смогли найти решение. Также я оба пробовал это решение для " ProjectSettings -> Другие настройки -> Разрешение на запись ", я пробовал это для внутренняя или внешняя SD-карта ничего не изменилось.