json | 对象的 JSON 表示形式。 |
objectToOverwrite | 要覆盖的对象。 |
通过读取对象的 JSON 表示形式覆盖其数据。
这类似于 JsonUtility.FromJsonOverwrite,但它支持任何引擎对象。可用字段与可通过 SerializedObject API 访问的字段或通过 YAML 序列化形式的对象找到的字段相同。
请注意,将此方法与结构结合使用可能无法达到预期效果,因为结构是按值而非引用传递给方法的。这意味着,方法并不会覆盖原始结构,而是结构的装箱副本将传递给方法并被覆盖。为避免发生这种情况,您可以将自己的结构装箱副本传递给方法,然后在方法返回后再将值复制过来。请参阅以下示例。
即使这样做,Unity 的内置结构(例如 Vector3 或 Bounds)也无法直接传递给方法,因此您必须将 Unity 的内置结构包含在封装器类或结构中。
using UnityEngine; using UnityEditor;
[System.Serializable] struct MyStruct { public int value; }
public class StructExample : MonoBehaviour { void Start() { MyStruct myStruct = new MyStruct(); object boxedStruct = myStruct; var json = @"{ ""value"" : 42 }"; EditorJsonUtility.FromJsonOverwrite(json, boxedStruct); myStruct = (MyStruct)boxedStruct; Debug.Log("myStruct.value = " + myStruct.value); } }
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.