Почему у этого кода такой результат?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour {

	public Save sv;

	public void Awake()
	{
		sv = JsonUtility.FromJson<Save>(PlayerPrefs.GetString("SV"));
		Debug.Log(sv.test.Length);
		Debug.Log("Begin - " + sv.achieveStatus.Length);		
	}
	public void OnApplicationQuit()
	{		
		Debug.Log(sv.test.Length);
		Debug.Log("End - " + sv.achieveStatus.Length);
		PlayerPrefs.SetString("SV", JsonUtility.ToJson(sv));
		PlayerPrefs.Save();
	}
}

[System.Serializable]
public class Save
{
	public byte[] test;
	public byte[,] achieveStatus;
}


этот код выдает ошибку: object reference not set to an instance of an object
После этого я инициализировал массивы и получилось так:
public byte[] test = new byte[3];
public byte[,] achieveStatus = new byte[3,3];


При запуске и при выходе код вывел в консоль 3 и 9. Но потом, когда я убрал new byte[3] и new byte[3,3]. И запустил в консоль вывелось 3 и object reference not set to an instance of an object и при выходе тоже самое. То есть в player prefs одномерный массив сохранился, а двумерный, получается, что нет. Почему так?
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
MrMureno
@MrMureno Куратор тега Unity
VR for all
не "не сохранился".
а серилизатор Json не умеет работать с многомерными массивами.

замените на что то в духе..массив массивов или список списков))
такое сможет сериализовать, а обращения по тем же индексам останется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
Для JSON в C# есть отличнейшие сервис для генерации классов и библиотека: Newtonsoft.Json
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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