json | 对象的 JSON 表示形式。 |
objectToOverwrite | 应覆盖的对象。 |
通过读取对象的 JSON 表示形式覆盖其数据。
此方法非常类似于 JsonUtility.FromJson,只是它将 JSON 数据加载到现有对象中,而不是创建新对象并将 JSON 数据加载到其中。这样,无需进行任何分配即可更新存储在类或对象中的值。
在内部,此方法使用 Unity 序列化器;因此传入的对象必须受序列化器支持:它必须是 MonoBehaviour、ScriptableObject 或应用了 Serializable 属性的普通类/结构。要覆盖的字段的类型必须受序列化器支持;不受支持的字段以及私有字段、静态字段和应用了 NonSerialized 属性的字段会被忽略。
支持任何普通类或结构,以及派生自 MonoBehaviour 或 ScriptableObject 的类。不支持其他引擎类型。只能在 Editor 中使用 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.