NullReferenceException при десериализации массива структур
у меня есть структура массивами обьектов, в одном файле должно храниться 1000 таких структур по 25 енамов и интов, я ее сохраняю,если нужно файл создается, но при попытке получить значение выдает ошибку, хотя по логике там должен быть просто 0
[System.Serializable]
public struct LvlData
{
public BlockType[] blockTypes;
public int[] blockPosX;
public int[] blockPosY;
public int[] blockPosZ;
}
public static LvlData GetData(string filepath, int arrayIndex)
{
LvlData lvldata = new LvlData();
if (File.Exists(filepath))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(filepath, FileMode.Open);
LvlData[] lvldataarray = (LvlData[])bf.Deserialize(file);
file.Close();
}
else Debug.LogError("cant find " + "file " + filepath);
return lvldata;
}
public static void SetData(string filepath, int arrayIndex, LvlData lvldata)
{
LvlData lvldataarray = new LvlData[1000];
if (File.Exists(filepath))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(filepath, FileMode.Open);
lvldataarray = (LvlData[])bf.Deserialize(file);
lvldataarray[arrayIndex] = lvldata;
bf.Serialize(file, lvldataarray);
file.Close();
}
else
{
Debug.Log("creating new file " + filepath);
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(filepath, FileMode.Create);
bf.Serialize(file, lvldataarray);
file.Close();
}
}
DataSaver.LvlData lvldata = new DataSaver.LvlData();
string filepath = DataSaver.GetPath(lvlpos);//путь
int index = DataSaver.GetIndex(lvlpos);//идекс
lvldata = DataSaver.GetData(filepath, index);//получаем данные
if (File.Exists(filepath))
{
Debug.Log(lvldata.blockTypes[11]); //тут возникает ошибка
}