Сохранить данные перед выходом. Android

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Сохранить данные перед выходом. Android

Сообщение VladikDEV 25 июн 2019, 02:17

Хочу сохранять значения некоторых настроек, делаю это перед тем как выйти из приложения. В эдиторе все ок, а вот на телефоне не сохраняется. Гуглил, везде ссылки на страницы с инфой о жизненном цикле андроид-приложения, но что с этой информацией мне сделать в юнити, я не понял. Никакие из трех методов ниже похоже не вызываются. Как это правильно сделать?

Синтаксис:
Используется csharp
public class GameSettings : MonoBehaviour
{
    public static GameSettings Instance;

    private void Awake()
    {
        if(Instance == null)
        {
            Instance = this;
            DontDestroyOnLoad(gameObject);
        }
    }

    private void Start()
    {
        string[] data = new string[2] { "50", "50" };

        if(!File.Exists(DataPaths.GetSettingsDataPath()))
        {
            File.WriteAllLines(DataPaths.GetSettingsDataPath(), data);
        }

        data = File.ReadAllLines(DataPaths.GetSettingsDataPath());

        if(float.TryParse(data[0], out var value))
        {
            Sensivity = value;
        }
        else
        {
            Debug.LogError("cant parse sensivity value: " + data[0]);
        }

        if (float.TryParse(data[1], out value))
        {
            Sound = value;
        }
        else
        {
            Debug.LogError("cant parse sound value: " + data[1]);
        }
    }

    public float Sensivity { get; set; }
    public float Sound { get; set; }

    private void OnApplicationPause(bool pauseStatus)
    {
        File.WriteAllLines(DataPaths.GetSettingsDataPath(), new string[] { Sensivity.ToString(), Sound.ToString() });
    }

    private void OnDestroy()
    {
        File.WriteAllLines(DataPaths.GetSettingsDataPath(), new string[] { Sensivity.ToString(), Sound.ToString() });
    }

    private void OnApplicationQuit()
    {
        File.WriteAllLines(DataPaths.GetSettingsDataPath(), new string[] { Sensivity.ToString(), Sound.ToString() });
    }
}

 
VladikDEV
UNIт
 
Сообщения: 88
Зарегистрирован: 24 май 2016, 13:45
Откуда: Минск

Re: Сохранить данные перед выходом. Android

Сообщение Saltant 25 июн 2019, 04:24

Сделай сохранения настроек через PlayerPrefs https://docs.unity3d.com/ScriptReferenc ... Prefs.html
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Сохранить данные перед выходом. Android

Сообщение VladikDEV 25 июн 2019, 12:14

Saltant писал(а):Сделай сохранения настроек через PlayerPrefs https://docs.unity3d.com/ScriptReferenc ... Prefs.html


тогда эти методы начнут вызываться перед выходом или что?
VladikDEV
UNIт
 
Сообщения: 88
Зарегистрирован: 24 май 2016, 13:45
Откуда: Минск

Re: Сохранить данные перед выходом. Android

Сообщение waruiyume 25 июн 2019, 13:57

DataPaths.GetSettingsDataPath точно существует и есть права на запись туда?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Сохранить данные перед выходом. Android

Сообщение VladikDEV 25 июн 2019, 16:20

waruiyume писал(а):DataPaths.GetSettingsDataPath точно существует и есть права на запись туда?



Синтаксис:
Используется csharp
public class DataPaths
{
    public static string GetConfigDataPath()
    {
#if UNITY_EDITOR
        return Application.persistentDataPath + "/WeaponStartConfEditor.txt";
#endif
        return Application.persistentDataPath + "/WeaponStartConf.txt";
    }

    public static string GetPlayerDataPath()
    {
#if UNITY_EDITOR
        return Application.persistentDataPath + "/PlayerDataEditor.txt";
#endif
        return Application.persistentDataPath + "/PlayerData.txt";
    }

    public static string GetSettingsDataPath()
    {
#if UNITY_EDITOR
        return Application.persistentDataPath + "/SettingsDataEditor.txt";
#endif
        return Application.persistentDataPath + "/SettingsData.txt";
    }
}

 

Да, работаю с файлами так, с другими проблем нет.
И я проверил уже что SettingsData.txt существует.
VladikDEV
UNIт
 
Сообщения: 88
Зарегистрирован: 24 май 2016, 13:45
Откуда: Минск


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26