Не уверен, что название правильное — я немного покопался в этом вопросе и не нашел хорошего ответа. Я видел пару похожих вопросов, но не могу понять, какое решение на самом деле поможет и как его реализовать.
Я пытаюсь импортировать файл Json, который создается на другом языке, и пытаюсь найти способ эффективного чтения данных. Это система сохранения мира в стиле Minecraft, использующая набор кусков и блоков. Каждое местоположение блока представляет собой целое число с присвоенным ему идентификатором. Файл выглядит так (сокращенно):
[
{
"anchor": [
-128,
0,
-128
],
"blocks": {
},
"id": 0
},
{
"anchor": [
48,
0,
-112
],
"blocks": {
"1037": 10,
"1038": 10,
"1053": 10,
"1054": 10,
"1069": 10,
"1070": 10,
"1071": 10,
},
"id": 27
}
]
Я могу извлечь привязку как массив целых чисел, а идентификатор — как отдельное целое число, но у меня возникли проблемы с получением списка блоков. Как лучше всего импортировать эти данные?
Это класс, который я использовал ранее, прежде чем понял, что словари не работают с jsonUtility:
public class Chunk
{
public int[] anchor;
public Dictionary blocks;
public int id;
public Chunk(Vector3Int location, int newid)
{
blocks = new Dictionary();
id = newid;
anchor = new int[] {location.x, location.z, location.y};
}
}
Я также пробовал версию, использующую список общих объектов, но безрезультатно.
И процесс импорта в виде простого импорта JSON:
string import = File.ReadAllText(saveDataLocation);
Chunk islandImport = JsonUtility.FromJson(import);