版本:Unity 6(6000.0)
语言简体中文
  • C#

EditorJsonUtility.FromJsonOverwrite

建议更改

成功!

感谢你帮助我们提高 Unity 文档质量。虽然我们无法接受所有提交,但我们确实会阅读用户建议的每个更改,并在适用时进行更新。

关闭

提交失败

由于某种原因,无法提交你建议的更改。请在几分钟后重试。感谢你抽出时间帮助我们提升 Unity 文档质量。

关闭

取消

声明

public static void FromJsonOverwrite(string json, object objectToOverwrite);

参数

json 该对象的 JSON 表示形式。
objectToOverwrite 需要覆盖的对象。

说明

从其 JSON 表示形式中读取数据来覆盖对象中的数据。

这类似于JsonUtility.FromJsonOverwrite,但它支持任何引擎对象。

请注意,此方法与结构结合使用可能无法达到你的预期效果,因为该方法按值而非按引用传递给结构。这意味着方法不会覆盖你的原始结构,而是将一个封装的结构副本传递给该方法并覆盖该副本。可以通过在你传入该方法之前制作自己封装的结构副本,然后在方法返回后再次复制值,来避免这种情况。请参见以下示例。

即使你这样做,也不能直接将 Unity 的内置结构(例如Vector3Bounds)传递给该方法,所以你必须将 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); } }