diff --git a/Editor/Core/UIElements/Graph/Fields/Resolvers/SerializedObjectResolver.cs b/Editor/Core/UIElements/Graph/Fields/Resolvers/SerializedObjectResolver.cs index 6816b8d..f0e46f6 100644 --- a/Editor/Core/UIElements/Graph/Fields/Resolvers/SerializedObjectResolver.cs +++ b/Editor/Core/UIElements/Graph/Fields/Resolvers/SerializedObjectResolver.cs @@ -8,7 +8,7 @@ namespace Ceres.Editor.Graph { [Ordered] - public class SerializedObjectFieldResolver : FieldResolver + public class SerializedObjectFieldResolver : FieldResolver { public SerializedObjectFieldResolver(FieldInfo fieldInfo) : base(fieldInfo) { @@ -59,7 +59,7 @@ private void OnGUI() } } - private void Restore() + private void RefreshWrapper() { var elementType = _value.GetBoxType(); if (elementType == null) @@ -70,16 +70,14 @@ private void Restore() var wrapper = SerializedObjectWrapperManager.CreateWrapper(elementType, ref handle); _value.objectHandle = handle.Handle; if (!wrapper) return; - if (!string.IsNullOrEmpty(value.jsonData)) + if (string.IsNullOrEmpty(value.jsonData)) return; + try { - try - { - wrapper.Value = JsonUtility.FromJson(_value.jsonData, elementType); - } - catch - { - // ignored - } + wrapper.Value = JsonUtility.FromJson(_value.jsonData, elementType); + } + catch + { + // ignored } } @@ -90,11 +88,13 @@ public override SerializedObjectBase value get => _value; set { + var oldValue = _value; _value = value; - if (_value != null) - { - Restore(); - } + if (_value == null) return; + RefreshWrapper(); + using var evt = ChangeEvent.GetPooled(oldValue, value); + evt.target = this; + SendEvent(evt); } } }