はじめに
ここでは、UnityでJSONの読み書きをする方法を記載しています。
以下をコピペし、UnityのGameObjectにイベント割り当てをすればOKです。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.SceneManagement;
//JSONファイルと同じ形式とする。
/*
{
item1: "hoge1",
item2: "hoge2"
}
*/
[Serializable]
public class SettingItemData
{
public string item1;
public string item2;
}
public class JsonSettings : MonoBehaviour
{
//JSONファイルのパスを記載する。
private string jsonPath = "Assets/Resources/settings.json";
//JSONファイルのファイル名を記載する。
private string jsonfileName = "settings";
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
//JSONファイルを上書き保存する。
private void saveSettings()
{
//書き込み元データを取得する。ここではsettings.jsonという
string jsonData = Resources.Load<TextAsset>(jsonfileName).ToString();
//JSONデータをオブジェクトに変換する
SettingItemData settingJson = JsonUtility.FromJson<SettingItemData>(jsonData);
//データを書き込む
settingJson.item1 = "hogehoge" //書き込む内容
settingJson.item2 = "hogehoge" //書き込む内容
//stringに変換する
string jsonstr = JsonUtility.ToJson(settingJson);
//ファイル書き込み用のライターを開く
StreamWriter writer = new StreamWriter(jsonPath, false);
//書き込み
writer.Write(jsonstr);
//ライターを閉じる処理
writer.Flush();
writer.Close();
}
//JSONファイルを読み込む。
private void loadSettings()
{
//ファイル名が間違ってる場合はエラーを出しとく
if(!File.Exists(jsonPath)){
Debug.Log("setting File not Exists");
return;
}
//JSONファイルを読み込む
var json = File.ReadAllText(jsonPath);
//オブジェクト化する
var obj = JsonUtility.FromJson<SettingItemData>(json);
//適当な変数に入れる
var item1 = obj.item1;
var item2 = obj.item2;
//デバッグに表示する。
Debug.Log(item1);
Debug.Log(item1);
}
}
説明
JSONオブジェクト
まず、JSONのクラスを作成する必要があります。オブジェクトの中身はJSONと同じ形式になるようにしてください。
//JSONファイルと同じ形式とする。
/*
{
item1: "hoge1",
item2: "hoge2"
}
*/
[Serializable]
public class SettingItemData
{
public string item1;
public string item2;
}
書き込み
JSONパスを宣言し(宣言する場所は任意です。関数の引数にしてもよいです。)、データを書き込みます。(データの書き込みももちろん引数にしてよいです。)
JSONの形式が崩れると嫌なので、先に保存するやつを読み出し、それに対して書き込みを行っています。(セーブデータや、ゲームキャラの能力情報など、上書き保存を前提として記載しています。)
//JSONファイルのパスを記載する。
private string jsonPath = "Assets/Resources/settings.json";
//JSONファイルのファイル名を記載する。
private string jsonfileName = "settings";
//JSONファイルを上書き保存する。
private void saveSettings()
{
//書き込み元データを取得する。ここではsettings.jsonという
string jsonData = Resources.Load<TextAsset>(jsonfileName).ToString();
//JSONデータをオブジェクトに変換する
SettingItemData settingJson = JsonUtility.FromJson<SettingItemData>(jsonData);
//データを書き込む
settingJson.item1 = "hogehoge" //書き込む内容
settingJson.item2 = "hogehoge" //書き込む内容
//stringに変換する
string jsonstr = JsonUtility.ToJson(settingJson);
//ファイル書き込み用のライターを開く
StreamWriter writer = new StreamWriter(jsonPath, false);
//書き込み
writer.Write(jsonstr);
//ライターを閉じる処理
writer.Flush();
writer.Close();
}
読み込み
JSONファイルを読み込んで、オブジェクト化します。その後、適当に変数などに放り込みます。
//JSONファイルを読み込む。
private void loadSettings()
{
//ファイル名が間違ってる場合はエラーを出しとく
if(!File.Exists(jsonPath)){
Debug.Log("setting File not Exists");
return;
}
//JSONファイルを読み込む
var json = File.ReadAllText(jsonPath);
//オブジェクト化する
var obj = JsonUtility.FromJson<SettingItemData>(json);
//適当な変数に入れる
var item1 = obj.item1;
var item2 = obj.item2;
//デバッグに表示する。
Debug.Log(item1);
Debug.Log(item1);
}
読み込み・書き込みの関数は適当な他動作とまとめて関数を作ってあげ、ボタンなどのオブジェクトに紐づけてあげればOK良いかと思います。
おわりに
こちらでは、UnityでJSONを利用する方法について記載しました!お疲れ様でした!
Amazon.co.jp
コメント