Unity C# Сохранение вложенного массива в PlayerPrefs
На днях просил помощи в создании вложенного + отображаемого в инспекторе массива (Ссылка на вопрос - Вложенные массивы С# unity). Теперь все работает через похожую структуру
public _MyArraysStruct[] _MyArrays;
public struct _MyArraysStruct{
public stirng[] mas;
}
Где 50 массивов содержит по массиву на 50 элементов в каждом. Задача - сохранить в PlayerPrefs сразу все данные.
На данный момент, для решения другой задачи, пользуюсь следующим методом сохранения
PlayerPrefs.SetString("Save", JsonUtility.ToJson(MyClass));
Где класс содержит в себе 3 массива типа Float и пару массивов string. Всё успешно сохраняет.
А при решении текущей задачи (Описана выше) происходит следующее - как не пробовал сохранять, могу сохранить только обращаясь к конкретному элементу массива
PlayerPrefs.SetString("Test_Save", JsonUtility.ToJson(_MyArrays[0]));
Сам элемент содержит в себе string массив на 50 элементов и успешно сохраняет их, а вот сохранить одним махом всё - не выходит. Не писать же 50 раз, создавая 50 разных сейв-файлов команду сохранения. Буду безмерно благодарен за помощь.
p.s.Заранее прошу прощения, если мой вопрос плохо читаемый, сказывается усталость...
Ответы (1 шт):
Всё дело в том, что вы хотите в JSON перевести массив структур. Для того, что бы это сделать, надо структуру с массивом перенести в другую структуру:
public struct st1{
public string[] gg;
}
public struct st2{
public st1[] struct1;
}
Что бы сериализовать в JSON, нужно сделать следующее:
string json = JsonUtility.ToJson(st2);
Для десериализации, нужно сделать так:
st2 struct2 = JsonUtility.FromJson<st2>(json);
Вообще, я вам бы не советовал сохранять столь большое количество текста в PlayerPrefs, куда лучше сохранить в память устройства