[Unity] 자체 제작 클래스를 요소로 한 정렬을 Json에 저장

[Unity] 자체 제작 클래스를 요소로 한 정렬을 Json에 저장


하고 싶은 일


· Unity에서 RPG를 제작할 때 외부 파일에 게임 정보(Play Status와 프로젝트 유지 등)를 보관하고 싶다.
• Excel을 입력한 정보를 Json 파일로 바꾸고 Json 파일 내의 정보를 Unity로 읽습니다.(추후 보기)

사이트 축소판 그림


다음 첫 번째 사이트의'성공 코드'를 참고하여 설치하였습니다.
그런데 왜 잘하지 못했는지 몰라서 두 번째 사이트를 참고해 수정했다.
https://soft-rime.com/post-4238/
https://teratail.com/questions/210321

소스 코드


저도 상술한 참고 사이트를 모방하여 인코딩을 해봤는데 도움이 되었으면 좋겠습니다.

test1.cs


using System.IO;
using UnityEngine;

// Jsonに出力する配列
// 配列は、UnityのJsonUtirityで直接管理できないため、配列をクラスのメンバーとして使用する。
[System.Serializable]
public class SaveData
{
    public MainItemData[] item;
}

// 配列の要素としてのクラス
[System.Serializable]
public class MainItemData
{
    public float x;
    public float y;
}

public class test1 : MonoBehaviour
{
    void Start()
    {
        SaveData save = new SaveData();     // SaveDataクラスをインスタンス化
        save.item = new MainItemData[2];    // SaveDataクラスのitem配列を要素数2でインスタンス化
        save.item[0] = new MainItemData();  // save.item[0]にMainItemDataクラスを格納する。
        save.item[0].x = 1;                 // save.item[0]であるMainItemDataクラスのx、yにそれぞれ値を代入する。
        save.item[0].y = 1;
        save.item[1] = new MainItemData();
        save.item[1].x = 2;
        save.item[1].y = 2;
	
        // Assets/Json/test.json (新規or上書きしたいJsonファイルのパスを指定する。)
        string filePath = Application.dataPath + "/Json/test.json";

        string json = JsonUtility.ToJson(save, true);
        StreamWriter streamWriter = new StreamWriter(filePath);
        streamWriter.Write(json);       // writer.WriteLine(json);でもOK
        streamWriter.Flush();
        streamWriter.Close();
    }
}

test.json


{
    "item": [
        {
            "x": 1.0,
            "y": 1.0
        },
        {
            "x": 2.0,
            "y": 2.0
        },
    ]
}

좋은 웹페이지 즐겨찾기