obj | JSON 形式に変換するオブジェクト |
prettyPrint | True の場合、読みやすさのため出力を書式設定します。False の場合、最小サイズの出力の書式設定します。デフォルトは False です。 |
string JSON 形式のオブジェクトのデータ
オブジェクトのパブリックフィールドの JSON 表現を生成します。
内部的には、このメソッドは Unity のシリアライザーを使用します。したがって、渡すオブジェクトをシリアライザーでサポートする必要があり、 MonoBehaviour、ScriptableObject や Serializable 属性が適用されるプレーンなクラスか構造体である必要があります。含めようとするフィールドのタイプはシリアライザーによってサポートされなければなりません。private フィールド、static フィールドや NonSerialized 属性を適用されるフィールドのようなサポートされていないフィールドは無視されます。
プレーンなクラスや構造体は、MonoBehaviour や ScriptableObject から派生したクラスと同様にサポートされます。他のタイプはサポートされません。(エディターでのみ、他の型を JSON にシリアライズするために EditorJsonUtility.ToJson を使用できます。)
If the object contains fields with references to other Unity objects, those references are serialized by recording the InstanceID for each referenced object. Because the Instance ID acts like a handle to the in-memory object instance, the JSON string can only be deserialized back during the same session of the Unity engine.
メソッドにプリミティブ型を渡すことは可能ですが、結果に期待できない場合があることに注意してください。プリミティブ型を直接シリアライズする代わりに、メソッドはそれらの public のインスタンスフィールドをシリアライズしようとし、結果として空のオブジェクトが生成されます。同様に、このメソッドに配列を渡しても JSON 配列を生成しません。ですが、オブジェクト public フィールドの配列を持たせることで配列のシリアライズができます。つまり、配列やプリミティブ型の実際の内容をシリアライズするにはクラスや構造体でラップする必要があります。
このメソッドはバックグラウンドスレッドから呼び出すことができます。実行中の間、この関数に渡すオブジェクトは変更しないでください。
Additional resources: MonoBehaviour, ScriptableObject, Object.GetInstanceID
using UnityEngine;
public class PlayerState : MonoBehaviour { public string playerName; public int lives; public float health;
public string SaveToString() { return JsonUtility.ToJson(this); }
// Given: // playerName = "Dr Charles" // lives = 3 // health = 0.8f // SaveToString returns: // {"playerName":"Dr Charles","lives":3,"health":0.8} }