json | オブジェクトの JSON 表現 |
objectToOverwrite | 上書きする必要があるオブジェクト |
JSON 表現から読み取ることでオブジェクトのデータを上書きします。
このメソッドは JsonUtility.FromJson によく似ています。新しいオブジェクトを作成し、 JSON データをそれに読み込ませる代わりに既存のオブジェクトに JSON データを読み込こませます。クラスやオブジェクトに割り当てを行わずに格納されている値を更新することができます。
内部的には、このメソッドは Unity のシリアライザーを使用します。したがって、渡すオブジェクトをシリアライザーでサポートする必要があります。それは MonoBehaviour、ScriptableObject や Serializable 属性を適用しているプレーンのクラスや構造体である必要があります。上書きしたいフィールドのタイプはシリアライザーによってサポートされてなければなりません。private フィールド、static フィールドや NonSerialized 属性を適用しているフィールドのようにサポートされていないフィールドは無視されます。
プレーンなクラスや構造体は、MonoBehaviour や ScriptableObject から派生したクラスと同様にサポートされます。他のタイプはサポートされていません。エディターの中でのみ、 EditorJsonUtility.FromJsonOverwrite を使用して他のオブジェクトを上書きできます。
オブジェクトのフィールドが JSON 表現に存在しない場合はそのまま残されます。
このメソッドの文字列を取るバージョンは、バックグラウンドスレッドから呼び出されます。関数実行中に、上書きされているオブジェクトを変更しないでください。このメソッドの TextAsset を取るバージョンは、バックグラウンドスレッドから呼び出すことはできません。
using UnityEngine;
public class PlayerState : MonoBehaviour { public string playerName; public int lives; public float health;
public void Load(string savedData) { 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 }
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.