Unity 6.3
0 онлайн 54 гостей 3 в системе
Вход

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); } }