using System; using System.Linq; using AlicizaX.AnimationFlow.Runtime; using Sirenix.OdinInspector.Editor; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; namespace AlicizaX.AnimationFlow.Editor { public class GraphInspector : VisualElement { private PropertyTree propertyTree; public void DrawNode(NodeView nodeView) { Clear(); if (nodeView.actionNode == null) { return; } // 使用 Odin PropertyTree 来处理非 UnityEngine.Object 对象 propertyTree = PropertyTree.Create(nodeView.actionNode); var imguiContainer = new IMGUIContainer(() => { if (propertyTree == null) { return; } propertyTree.Draw(false); // 手动调用 Odin 的 Apply,处理数据更新后的逻辑 if (propertyTree.ApplyChanges()) { nodeView.RefreshState(); } }); Add(imguiContainer); propertyTree.Dispose(); } } }