👋

[Unity] Jsonに保存された情報を読み取る

2022/03/17に公開

[Unity] Jsonに保存された情報を読み取る

行いたいこと

・ゲーム情報(PlayerStatusや保持アイテム等)を外部ファイルで保管したJsonファイルからゲーム情報を読み取りたい。
・Excelに入力した情報をJsonファイルに置き換え、Jsonファイル内の情報をUnityに読み込みたい。(後日追記)

参考サイト

下記2つのサイトを参考に実装しました。
https://memonoana.hatenablog.com/entry/2019/05/22/005823
http://kerotan-factory.xblog.jp/article/478670762.html

ソースコード

test.txt

読み込見たい情報が記載されたJsonファイルです。

test.txt
{
    "loadItem": [
        {
            "x": 1.0,
            "y": 1.0
        },
        {
            "x": 2.0,
            "y": 2.0
        },
        {
            "x": 2.0,
            "y": 2.0
        }
    ]
}

InputToJson.cs

Jsonファイルから情報を読み取るソースファイルです。

InputToJson.cs
using UnityEngine;

[System.Serializable]
public class LoadData
{
    public MainItemData[] loadItem;
}

public class InputToJson : MonoBehaviour
{
    void Start()
    {
        // SaveDataクラスをインスタンス化
        LoadData loadData = new LoadData();
	
	// SaveDataクラスのitem配列を要素
        loadData.loadItem = new MainItemData[3];3でインスタンス化

	// Assets/Resources配下のtest.txtの中身を文字列に変換する。
        string inputString = Resources.Load<TextAsset>("test").ToString();
	
	// 読み取った文字列をオブジェクト型に変換
        LoadData inputJson = JsonUtility.FromJson<LoadData>(inputString);

	// 配列名であるloadItemとJsonに記載された配列名が一致していないとヌルポとなるので、配列名が同一か確認すること。
        Debug.Log(inputJson.loadItem[0].x);    // 1
    }
}

MainItemData.cs

配列に格納されていたクラス。
以下の記事でJsonに情報を書き込む方法について記述しました。
https://zenn.dev/tech_memorandum/articles/25e1ec1e83e929

MainItemData.cs
[System.Serializable]
public class MainItemData
{
    public float x;
    public float y;
}

Discussion