json | オブジェクトの JSON 表現 |
objectToOverwrite | 上書きする必要があるオブジェクト |
JSON を読み取り、オブジェクトのデータを上書きします。
このメソッドは JsonUtility.FromJson によく似ています。新しいオブジェクトを作成し、 JSON データをそれに読み込ませる代わりに既存のオブジェクトに JSON データを読み込こませます。クラスやオブジェクトに割り当てを行わずに格納されている値を更新することができます。
内部的には、このメソッドは Unity のシリアライザーを使用します。したがって、渡すオブジェクトをシリアライザーでサポートする必要があります。それは MonoBehaviour、ScriptableObject や Serializable 属性を適用しているプレーンのクラスや構造体である必要があります。上書きしたいフィールドのタイプはシリアライザーによってサポートされてなければなりません。private フィールド、static フィールドや NonSerialized 属性を適用しているフィールドのようにサポートされていないフィールドは無視されます。
プレーンなクラスや構造体は、MonoBehaviour や ScriptableObject から派生したクラスと同様にサポートされます。他のタイプはサポートされていません。エディターの中でのみ、 EditorJsonUtility.FromJsonOverwrite を使用して他のオブジェクトを上書きできます。
オブジェクトのフィールドが JSON 表現に存在しない場合はそのまま残されます。
このメソッドはバックグラウンドスレッドから呼び出すことができます。関数の実行中の間、上書きされているオブジェクトを変更しないでください。
using UnityEngine;
public class PlayerState : MonoBehaviour { public string playerName; public int lives; public float health;
public void Load(string savedData) { return JsonUtility.FromJsonOverwrite(savedData, this); }
// Given JSON input: // {"lives":3, "health":0.8} // the Load function will change the object on which it is called such that // lives == 3 and health == 0.8 // the 'playerName' field will be left unchanged
}