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 шт):

Автор решения: Mr.AntonDer

Всё дело в том, что вы хотите в 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, куда лучше сохранить в память устройства

→ Ссылка