【Unity】Json Serialization(JSONシリアライズ)を使ったデータのセーブ方法
今回はUnityでデータをセーブする方法を書いていきます。
まず、セーブ方法には下記の4点が挙げられます。
2.Json Serialization
3.Binary Serialization
4.Database
今回は2.Json Serializationについて書いていきます。
1のPlayerPrefsを使うので、その辺りも知りたければこちらで解説しているのでどうぞ。
JSONシリアライズって何
JSONシリアライズは、データをコンピューターで扱いやすいJSON形式に変換することです。JSON形式とは、一般的にキーと値のペアで表すデータのフォーマットです。
UnityAPIのJsonUtilityクラスを使用して、JSONのシリアライズとデシリアライズが簡単に行えます。
このJsonUtilityを使うことで、
・クラスをJSON文字列化→文字列を保存
・JSON文字列をロード→JSON文字列をクラスに変換
といった風に、色んなデータ型をクラスに入れて、そのクラスをセーブしたり取り出したりできます。
ソースの記述方法
では実際にソースベースで使い方を解説します。
データクラスの作成
まずは保存したいクラスを作成しましょう。
保存したいクラスには[System.Serializable]を使います。
今回は仮に以下のデータを保存したいとします。
[System.Serializable]
public class PlayerData
{
public string playerName;
public int level;
}
クラスをJSON文字列に変換(シリアライズ)
JsonUtility.ToJsonメソッドを使用して、データクラスのインスタンスをJSON文字列に変換します。
PlayerData playerData = new PlayerData();
// データの値をセット
playerData.playerName = "John";
playerData.level = 5;
// クラスをJSON文字列に変換
string jsonString = JsonUtility.ToJson(playerData);
// JSON文字列を保存
PlayerPrefs.SetString("SAVE_DATA", jsonString);
この段階でjsonStringには、データクラスの内容がJSON文字列として格納されています。
JSON文字列をクラスに変換(デシリアライズ)
JsonUtility.FromJsonメソッドを使用して、JSON文字列をデータクラスのインスタンスに変換します。
// JSON文字列をロードする
string jsonString = PlayerPrefs.GetString("SAVE_DATA");
// JSON文字列をクラスに変換
PlayerData loadedPlayerData = JsonUtility.FromJson<PlayerData>(jsonString);
loadedPlayerDataには、JSON文字列からデシリアライズされたデータクラスのインスタンスが格納されます。
ちなみにセーブしたデータは、
Edit>Clear All PlayerPrefsで消すことができます。
コメント
0 件のコメント :
コメントを投稿