using System; using UnityEngine; namespace UnityEditor.SettingsManagement { [Serializable] sealed class ValueWrapper { #if PRETTY_PRINT_JSON const bool k_PrettyPrintJson = true; #else const bool k_PrettyPrintJson = false; #endif [SerializeField] T m_Value; public static string Serialize(T value) { var obj = new ValueWrapper() { m_Value = value }; return EditorJsonUtility.ToJson(obj, k_PrettyPrintJson); } public static T Deserialize(string json) { var value = (object)Activator.CreateInstance>(); EditorJsonUtility.FromJsonOverwrite(json, value); return ((ValueWrapper)value).m_Value; } public static T DeepCopy(T value) { if (typeof(ValueType).IsAssignableFrom(typeof(T))) return value; var str = Serialize(value); return Deserialize(str); } } }