I have a problem, json quietly saves the file and when you need to download it, nothing comes out. When you start the game, all parameters become false and I can't understand why . I will be glad if someone can help. also, if something is not clear in the code, write I will explain what the code is responsible for . Here is the code where to save the file
`
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"); //the path of the file
#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))//if file is there
{
sv = JsonUtility.FromJson<Save>(File.ReadAllText(path)); // assign
Debug.Log("assign");
}
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("save");
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;
}
}
`
end Load
private Save sv = new Save();
public bool[] Persi;
private string path;
private string path2;
public GameObject[] Players;
public bool[] ItSkin;
public int Num;
public Vector2 PosActive;
private int NumPlayer;
public int q;
public Vector2 PosNotActive;
public int NumberPlayer = 0;
public GameObject NotSkin;
public int bla = 0;
void Awake()
{
q = PlayerPrefs.GetInt("NumTrue" , 0);
//Persi[q] = true;
}
void Start()
{
#if UNITY_ANDROID && !UNITY_EDITOR
path = Path.Combine(Application.persistentDataPath, "Save.json");
#else
path = Path.Combine(Application.dataPath, "Save.json"); // путь файла
#endif
if (File.Exists(path))//если файл есть
{
sv = JsonUtility.FromJson<Save>(File.ReadAllText(path)); // присваеваем
Debug.Log("присвоили");
}
else
{
}
for(int e = 0; e < Persi.Length; e++){
Debug.Log(Persi[e]);
}
}
public void PersMas(){
}
#if UNITY_ANDROID && !UNITY_EDITOR
private void OnApplicationPause(bool pause){
PlayerPrefs.SetInt("PlayerNum", NumberPlayer);
}
#endif
private void OnApplicationQuit()
{
PlayerPrefs.SetInt("PlayerNum", NumberPlayer);
}
void Update()
{
sv = JsonUtility.FromJson<Save>(File.ReadAllText(path)); // присваеваем
sv.Persi = Persi;
//Persi[q] = true;
Num = PlayerPrefs.GetInt("Num" , 0);
PlayerPrefs.SetInt("PlayerNum", NumberPlayer);
if(bla == 16 && NumPlayer == 16){
bla = 0;
NumberPlayer = 0;
}
}
public void Next(){
switch(bla){
case 0:
bla++;
NumPlayer = 1;
if(Persi[0] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 1;
NotSkin.SetActive(false);
}
Players[0].SetActive(false);
Players[1].SetActive(true);
break;
case 1:
bla++;
NumPlayer = 2;
if(Persi[1] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 2;
NotSkin.SetActive(false);
}
Players[1].SetActive(false);
Players[2].SetActive(true);
break;
case 2:
bla++;
NumPlayer = 3;
if(Persi[2] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 3;
NotSkin.SetActive(false);
}
Players[2].SetActive(false);
Players[3].SetActive(true);
break;
case 3:
bla++;
NumPlayer = 4;
if(Persi[3] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 4;
NotSkin.SetActive(false);
}
Players[3].SetActive(false);
Players[4].SetActive(true);
break;
case 4:
bla++;
NumPlayer = 5;
if(Persi[4] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 5;
NotSkin.SetActive(false);
}
Players[4].SetActive(false);
Players[5].SetActive(true);
break;
case 5:
bla++;
NumPlayer = 6;
if(Persi[5] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 6;
NotSkin.SetActive(false);
}
Players[5].SetActive(false);
Players[6].SetActive(true);
break;
case 6:
bla++;
NumPlayer = 7;
if(Persi[6] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 7;
NotSkin.SetActive(false);
}
Players[6].SetActive(false);
Players[7].SetActive(true);
break;
case 7:
bla++;
NumPlayer = 8;
if(Persi[7] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 8;
NotSkin.SetActive(false);
}
Players[7].SetActive(false);
Players[8].SetActive(true);
break;
case 8:
bla++;
NumPlayer = 9;
if(Persi[8] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 9;
NotSkin.SetActive(false);
}
Players[8].SetActive(false);
Players[9].SetActive(true);
break;
case 9:
bla++;
NumPlayer = 10;
if(Persi[9] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 10;
NotSkin.SetActive(false);
}
Players[9].SetActive(false);
Players[10].SetActive(true);
break;
case 10:
bla++;
NumPlayer = 11;
if(Persi[10] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 11;
NotSkin.SetActive(false);
}
Players[10].SetActive(false);
Players[11].SetActive(true);
break;
case 11:
bla++;
NumPlayer = 12;
if(Persi[11] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 12;
NotSkin.SetActive(false);
}
Players[11].SetActive(false);
Players[12].SetActive(true);
break;
case 12:
bla++;
NumPlayer = 13;
if(Persi[12] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 13;
NotSkin.SetActive(false);
}
Players[12].SetActive(false);
Players[13].SetActive(true);
break;
case 13:
bla++;
NumPlayer = 14;
if(Persi[13] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 14;
NotSkin.SetActive(false);
}
Players[13].SetActive(false);
Players[14].SetActive(true);
break;
case 14:
bla++;
NumPlayer = 15;
if(Persi[14] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 15;
NotSkin.SetActive(false);
}
Players[14].SetActive(false);
Players[15].SetActive(true);
break;
case 15:
bla++;
NumPlayer = 16;
if(Persi[15] == false){
NotSkin.SetActive(true);
}
else{
NumberPlayer = 0;
NotSkin.SetActive(false);
}
Players[15].SetActive(false);
Players[0].SetActive(true);
break;
default:
break;
}
}
public void CloseSkin(){
SceneManager.LoadScene("menu");
}
[Serializable]
public class Save
{
public bool[] Search;
public bool[] Persi;
}