40 lines
1.0 KiB
C#
40 lines
1.0 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace UnityEditor.SettingsManagement
|
|
{
|
|
[Serializable]
|
|
sealed class ValueWrapper<T>
|
|
{
|
|
#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<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);
|
|
}
|
|
}
|
|
}
|