Yura111
@Yura111

Почему json не сохраняется?

Всем привет! Почему то json не хочет сохранять данные и при завершение игры сбрасывает данные.
скрипт отвечает за выдачу рандомного героя
{
    private string jsonData = "Random Text";
    private string path;

    public int[] Mass = { 30, 25, 15, 10, 5 };
    public bool[] Persi;

    public bool ItTrue = false;

    public int q = 0;
    public int i = 0;
    public int Rand;
    public int Num;
    public int total;
    public int Money;

    public Transform pos ;

    public Sprite[] Charectors;

    private Save sv = new Save();
    
    

    void Awake()
    {
        Money = PlayerPrefs.GetInt("Money_S", 0);
    }
    void Start()
    {
        
        PlayerPrefs.SetInt("NumTrue", i);
        PlayerPrefs.SetInt("Money_S", Money);
        Money = PlayerPrefs.GetInt("Money_S", 0);
        Money += 50;


#if UNITY_ANDROID && !UNITY_EDITOR
        path = Path.Combine(Application.persistentDataPath, "Save.json");
#else
        path = Path.Combine(Application.dataPath, "Save.json"); // путь файла
#endif
        
        foreach (var item in Mass)
        {
            total += item;
        }

        Num = UnityEngine.Random.Range(0, total);

        for(; i < Mass.Length; i++)
        {
            if(Num <= Mass[i])
            {
                this.GetComponent<SpriteRenderer>().sprite = Charectors[i];
                Persi[i] = true;
                return;
            }
            else
            {
                Num -= Mass[i];
            }
        }

        



        if (File.Exists(path))//если файл есть
        {
            sv = JsonUtility.FromJson<Save>(File.ReadAllText(path)); // присваеваем 
            
            Debug.Log("присвоили");
        }
        else
        {

        }
        ItNUM();
        

    }

    

#if UNITY_ANDROID && !UNITY_EDITOR
        private void OnApplicationPause(bool pause){
            if(paise) File.WriteAllText(path, JsonUtility.ToJson(sv));

        }
#endif


    private void OnApplicationQuit()
    {
        File.WriteAllText(path, JsonUtility.ToJson(sv));
        Debug.Log("сохранили");
        PlayerPrefs.SetInt("Money_S", Money);
    }

    void Update()
    {
        sv.Persi = Persi;
        
        File.WriteAllText(path, JsonUtility.ToJson(sv));
        PlayerPrefs.SetInt("NumTrue", i);
    }
    
    
        
    
    
    
    
    

    [Serializable]
    public class Save
    {
        public bool[] Search;
        public bool[] Persi;
        
    }


    public void ItNUM()
    {
        if(Num != i)
        {
            sv.Search[i] = true;
        }
    }
}

если в коде что то не понятно напишите
  • Вопрос задан
  • 21 просмотр
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Это называется отладка своего багнутого кода. Научитесь это делать. С вопросами, про каждый не работающий свой код, на форумах далеко не уедешь.
Не умеете работать с отладчиком, обложите свой код логами, где и что у вас есть в какой момент.

Я уж молчу, про то что код под андройд даже не соберётся:
#if UNITY_ANDROID && !UNITY_EDITOR
        private void OnApplicationPause(bool pause){
            if(paise) File.WriteAllText(path, JsonUtility.ToJson(sv));

        }
#endif
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы