Вывод данных в файл JSON csharp (Unity) - PullRequest
0 голосов
/ 09 мая 2019

Я не могу понять, как вывести сложный тип данных в JSON.

Я создал тип данных, который в основном содержит меньшие типы данных, я также назначил типы данных новым типам данных, чтобы онивсе, кажется, имеют ссылку.Я изучил вывод сложных данных, но, похоже, не смог найти проблему, похожую на мою.Я рассмотрю возможность добавления данных, но этот метод будет намного проще, если я смогу успешно вывести тип данных.

Сохранить код данных

[System.Serializable]
public class SaveData
{
    public MapData mapData;
}

[System.Serializable]
public class TileData
{
    public List<BlockData> blockData;
}

[System.Serializable]
public class BlockData
{
    public Vector3 blockPosition;
    public string blockName;
    public float blockOrientation;
    public int blockLayer;
}

[System.Serializable]
public class MapData
{
    public List<TileData> tileData;
}

Получить метод данных карты

    SaveData GetMapData()
    {
        mapHeight += mapStartY;
        maplength += mapStartX;

        int tileCounter = 0;

        MapData mapData = new MapData();
        SaveData saveData = new SaveData();

        List<TileData> tileList = new List<TileData>();

        for (float r = mapStartY; r < mapHeight; r++)
        {
            for(float c = mapStartX; c < maplength; c++)
            {



                Vector2 currentPosition = new Vector2(c * (blocksize)-(blocksize/2), blocksize * r -(blocksize/2));



                GameObject[] currentTile = getObjectID.RayDetectAll(currentPosition);



                if (currentTile!= null)
                {
                    //adds a tiledata list here if the tile is occupied.

                    TileData tileData = new TileData();

                    //adds a list of blocks here.
                    List<BlockData> blocks = new List<BlockData>();
                    for (int i = 0; i < currentTile.Length; i++)
                    {

                        BlockData blockData = new BlockData();


                        GameObject currentBlock = currentTile[i];

                        blockData.blockPosition = currentBlock.transform.position;
                        blockData.blockName = currentBlock.name;
                        blockData.blockOrientation = currentBlock.transform.eulerAngles.z;
                        blockData.blockLayer = currentBlock.GetComponent<SpriteRenderer>().sortingOrder;                  

                        //adds a blockdata to the blocks list
                        blocks.Add(blockData);

                        Debug.LogWarning(blockData.blockName);
                    }

                    //need to assign tile data and add a new one to the list
                    tileList.Add(tileData);

                    //assins the blocks to tile data  block data list
                    tileData.blockData = blocks;

                }
                else
                {
                    //Debug.LogWarning("warning! no objects found on tile: " + currentPosition);
                }

                tileCounter++;               
            }

        }
'''


I want the file to output all the data so that i can read the data and reassign it. Right now it outputs the data wrong.

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

просто, чтобы люди знали, что я разработал новый метод, который подсчитывал массив всех плиток и назначал его типу данных с массивом в нем.Удалось загрузить из этого формата.

0 голосов
/ 10 мая 2019

Обычно я думаю, что это то, что можно прокомментировать, но я пока не могу комментировать.

Если все, что вам нужно - это преобразовать объект в Json, не могли бы вы использовать JsonUtility.ToJson (), как описано здесь ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...