Unityでセーブデータを保存したい場合はJsonUtilityが便利

Unityでセーブデータを保存したい場合はJsonUtilityを使うと便利です。

使い方は次のような感じです。

public class ExampleData
{
  public string Name;
  public int Value;
}
public class Example : MonoBehaviour
{ 
  void Start()
  { 
    var data1 = new ExampleData { Name = "abc", Value = 123 };

    var json = Save(data1);
    Debug.Log(json);

    var data2 = Load(json);
    Debug.Log($"Name={data2.Name} Value={data2.Value}");
  }

  ExampleData Load(string json)
  {
    return JsonUtility.FromJson<ExampleData>(json);
  }

  string Save(ExampleData data)
  {
    return JsonUtility.ToJson(data);
  }
}

実行結果

{"Name":"abc","Value":123}
Name=abc Value=123

ArgumentException

MonoBehaviourを継承したクラスでJsonUtility.FromJsonを使うとArgumentExceptionという例外が発生します。久し振りに使うと忘れて悩むことがあるので気を付けてください。

public class ExampleData : MonoBehaviour
{
  public string Name;
  public int Value;
}

リンク

Unity – Scripting API: JsonUtility
https://docs.unity3d.com/ScriptReference/JsonUtility.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です