Проблема в десереализации файла с объектами
В JSONе лежат Чанки, в которых лежат кубы. Проблема в том что при итерации каждого чанка отдельно загружаются кубы из всех чанков, которые были в JSON, из-за чего кратно возрастает число появляющихся блоков Пример: В JSON лежит 2 чанка с 4096 кубов в каждом. При загрузке считываются 8192 куба, т.е. берутся и те кубы, до чьего родительского чанка очередь не дошла, а когда дойдёт, то снова будут взяты абсолютно все кубы. Долго в коде копаюсь, а ошибку найти не могу.
Десереализация содержимого Происходит в следующем коде:
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using System.IO;
//... Класс MonoBehaviour и voidы не вставлял
public class BlockSerializer
{
public string BlockName { get; set; }
public int PositionX { get; set; }
public int PositionY { get; set; }
public int PositionZ { get; set; }
}
public class ChunkSerializer
{
public string Chunk { get; set; }
public int ChunkPositionX { get; set; }
public int ChunkPositionY { get; set; }
public int ChunkPositionZ { get; set; }
public List<BlockSerializer> BlocksInChunk { get; set; }
}
WorldBlocksData = File.ReadAllText($@"Путь к JSON-файлу");
List<ChunkSerializer> Chunks = JsonConvert.DeserializeObject<List<ChunkSerializer>>(WorldBlocksData);
Debug.Log($"Загружается чанков: {Chunks.Count}");
foreach (var CurrentChunk in Chunks)
{
GameObject TargetChunk = Instantiate(Chunk,
new Vector3(CurrentChunk.ChunkPositionX, CurrentChunk.ChunkPositionY, CurrentChunk.ChunkPositionZ), new Quaternion(0, 0, 0, 0));
TargetChunk.name = CurrentChunk.Chunk;
Debug.Log($"Загружается кубов в чанке: {CurrentChunk.BlocksInChunk.Count}");
foreach (var CurrentBlock in CurrentChunk.BlocksInChunk)
{
if (CurrentBlock.BlockName == "cobblestone")
{
Instantiate(Cobblsetone, new Vector3(CurrentBlock.PositionX, CurrentBlock.PositionY,
CurrentBlock.PositionZ), new Quaternion(0, 0, 0, 0), TargetChunk.transform);
}
}
}