プレイヤーの体力やパワーなどのデータを、ゲームを再起動しても残しておきたいことがあります。その時に役に立つのがJsonUtilityです。
今回はこれを用いてデータの保存・読み込みを行いたいと思います。
Android・iOSとエディターで使用可能です。
はじめに
まずはProjectウィンドウでC#スクリプトを作成し、JsonDataと名付けます。
JsonDataを開き、以下のコードをコピペします。
using UnityEngine;
using System.IO;
public class JsonData
{
public static void Save<T>(T o, string path)
{
string str = JsonUtility.ToJson(o);
StreamWriter streamWriter = new StreamWriter(Application.persistentDataPath + "/" + path + ".json", false);
streamWriter.Write(str);
streamWriter.Flush();
streamWriter.Close();
}
public static T Load<T>(string path)
{
StreamReader reader = new StreamReader(Application.persistentDataPath + "/" + path + ".json");
string getone = reader.ReadToEnd();
reader.Close();
return JsonUtility.FromJson<T>(getone);
}
}
これでデータを保存・読み込みの準備ができました。このスクリプトには二つの関数が含まれています。これらを呼び出すことでデータを保存したり読み込んだ入りします。
もうJsonDataは書き換えませんので、閉じてしまって構いません。
一つずつ解説します。(その前にデータを準備しましょう)
データの準備
まず、保存する変数を用意します。保存したい変数があるスクリプトもしくは、JsonDataとは異なるスクリプトを編集します。今回は、プレイヤーの情報を含んだInfoクラス、その中に、体力とパワーの整数値を入れています。
[System.Serializable]
public class Info
{
public int hp;
public int power;
}
public Info info;
このinfoを保存することでhpとpowerをまとめて保存することができます。
これで準備は完了しました。
データの保存
データを保存するにはJsonData.Save()を使用します。
JsonData.Save(info, "pureiya-");
上の例では、info変数を保存していますが、その時にファイル名をpureiya-に設定しています。これはデータを読み込むときに必要な名前になります。
これでデータは無事保存されたと思います。
データの読み込み
データの保存ができたので、次はデータの読み込みを行いたいと思います。データの読み込みをするにはJsonData.Load<>()を使用します。
info = JsonData.Load<Info>("pureiya-");
これはinfoという変数に、読み込んだデータをぶち込んでいます。「データの保存」で決めた、”pureiya-“という名前をここで使用します。全く同じ名前でないと正しく読み込まれません。
中かっこ<>の中には、クラス名(ここでいうInfo)を記入してください。
まとめ
このように、JsonUtilityを用いれば簡単にデータの保存・読み込みが行えます。
ありがとうございました。
コメント