EditorJsonUtility.FromJsonOverwrite
Declaration
public static void FromJsonOverwrite(string json, object objectToOverwrite);Параметры
| Параметр | Описание |
|---|---|
| json-файл | JSON представление объекта. |
| objectToOverwrite | Объект для перезаписи. |
Описание
Перезапись данных в объекте путем чтения из его представления JSON.
Это похоже на JsonUtility.FromJsonOverwrite, но он поддерживает любой объект двигателя.
Учтите, что применение этого метода к структуре может дать не тот результат, которого вы ждёте: структуры передаются в метод по значению, а не по ссылке. Это значит, что вместо перезаписи вашей исходной структуры в метод передаётся и перезаписывается её упакованная копия. Этого можно избежать, самостоятельно создав упакованную копию структуры, передав её в метод, а затем скопировав значения обратно. См. пример ниже.
Даже если вы сделаете это, встроенные структуры 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); } }