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