Объявление
public static void FromJsonOverwrite(string json, object objectToOverwrite);Параметры
json | JSON-представление объекта. |
objectToOverwrite | Объект, который должен быть перезаписан. |
Описание
Перезаписать данные в объекте, прочитав его представление JSON.
Этот метод очень похож на JsonUtility.FromJson, за исключением того, что вместо создания нового объекта и загрузки в него данных JSON данные JSON загружаются в существующий объект. Это позволяет обновлять значения, хранящиеся в классах или объектах, без каких-либо распределений.
Внутри этот метод использует сериализатор Unity; поэтому объект, который вы передаете, должен поддерживаться сериализатором: это должен быть MonoBehaviour, ScriptableObject или простой класс/структура с примененным атрибутом Serializable. Типы полей, которые вы хотите перезаписать, должны поддерживаться сериализатором; неподдерживаемые поля будут игнорироваться, как и частные поля, статические поля и поля с примененным атрибутом NonSerialized.
Поддерживается любой простой класс или структура, а также классы, производные от MonoBehaviour или ScriptableObject. Другие типы двигателей не поддерживаются. Только в редакторе вы можете использовать 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
}