From 637d9de6d22448b836fd0555e81e4b3bdf5616bc Mon Sep 17 00:00:00 2001 From: Ding Yuntian <1491671119@qq.com> Date: Tue, 8 Jul 2025 15:16:31 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=8A=A8=E7=94=BB=E7=89=87=E6=AE=B5?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Editor/UXML/AnimatorLinker.meta | 8 + .../UXML/AnimatorLinker/AnimatorClipLink.cs | 298 ++++++++++++++++++ .../AnimatorLinker/AnimatorClipLink.cs.meta | 13 + .../UXML/AnimatorLinker/AnimatorClipLink.uss | 5 + .../AnimatorLinker/AnimatorClipLink.uss.meta | 11 + .../UXML/AnimatorLinker/AnimatorClipLink.uxml | 22 ++ .../AnimatorClipLink.uxml.meta} | 2 +- Assets/Editor/UXML/Editor Simple.meta | 8 + .../UXML/Editor Simple/SimpleCustomEditor.cs | 83 +++++ .../Editor Simple/SimpleCustomEditor.cs.meta | 13 + .../Editor Simple/SimpleCustomEditor.uxml | 5 + .../SimpleCustomEditor.uxml.meta | 10 + .../SimpleCustomEditor_uxml.uxml | 5 + .../SimpleCustomEditor_uxml.uxml.meta | 10 + Assets/Editor/uxml/SpriteGroup_Simple.uxml | 24 -- Assets/Render/Renderer2Dtest.asset | 22 +- ProjectSettings/ProjectSettings.asset | 2 +- 17 files changed, 502 insertions(+), 39 deletions(-) create mode 100644 Assets/Editor/UXML/AnimatorLinker.meta create mode 100644 Assets/Editor/UXML/AnimatorLinker/AnimatorClipLink.cs create mode 100644 Assets/Editor/UXML/AnimatorLinker/AnimatorClipLink.cs.meta create mode 100644 Assets/Editor/UXML/AnimatorLinker/AnimatorClipLink.uss create mode 100644 Assets/Editor/UXML/AnimatorLinker/AnimatorClipLink.uss.meta create mode 100644 Assets/Editor/UXML/AnimatorLinker/AnimatorClipLink.uxml rename Assets/Editor/{uxml/SpriteGroup_Simple.uxml.meta => UXML/AnimatorLinker/AnimatorClipLink.uxml.meta} (86%) create mode 100644 Assets/Editor/UXML/Editor Simple.meta create mode 100644 Assets/Editor/UXML/Editor Simple/SimpleCustomEditor.cs create mode 100644 Assets/Editor/UXML/Editor Simple/SimpleCustomEditor.cs.meta create mode 100644 Assets/Editor/UXML/Editor Simple/SimpleCustomEditor.uxml create mode 100644 Assets/Editor/UXML/Editor Simple/SimpleCustomEditor.uxml.meta create mode 100644 Assets/Editor/UXML/Editor Simple/SimpleCustomEditor_uxml.uxml create mode 100644 Assets/Editor/UXML/Editor Simple/SimpleCustomEditor_uxml.uxml.meta delete mode 100644 Assets/Editor/uxml/SpriteGroup_Simple.uxml diff --git a/Assets/Editor/UXML/AnimatorLinker.meta b/Assets/Editor/UXML/AnimatorLinker.meta new file mode 100644 index 000000000..0e413b759 --- /dev/null +++ b/Assets/Editor/UXML/AnimatorLinker.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: afc01321d5046a141bba1f84dd41e8cc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/UXML/AnimatorLinker/AnimatorClipLink.cs b/Assets/Editor/UXML/AnimatorLinker/AnimatorClipLink.cs new file mode 100644 index 000000000..461825425 --- /dev/null +++ b/Assets/Editor/UXML/AnimatorLinker/AnimatorClipLink.cs @@ -0,0 +1,298 @@ +using System; +using System.IO; +using System.Linq; +using JetBrains.Annotations; +using UnityEditor; +using UnityEditor.Animations; +using UnityEditor.UIElements; +using UnityEngine; +using UnityEngine.UIElements; +using Object = UnityEngine.Object; + +namespace AibisDream.SystemEditor +{ + public class AnimatorClipLink : EditorWindow + { + [SerializeField] private VisualTreeAsset visualTreeAsset; + + private ObjectField _animatorField; + private Label _animatorMessage; + private ListView _stateInfoView; + + private TextField _clipsPathField; + private Label _clipsMessage; + private ListView _clipsNameList; + + private HelpBox _matchMessageBox; + + #region 部分缓存 + + private static AnimatorController _animatorCache; + private static string _clipsPathCache; + + private ChildAnimatorState[] _statesCache; + private string[] _clipsCache; + + private bool _isChecked; + private bool _allMatched; + private bool _isAllLoad; + + #endregion + + [MenuItem("Tools/AnimatorClipLink")] + public static void ShowExample() + { + AnimatorClipLink wnd = GetWindow(); + wnd.titleContent = new GUIContent("AnimatorClipLink"); + } + + public void CreateGUI() + { + // Each editor window contains a root VisualElement object + VisualElement root = rootVisualElement; + + // Instantiate UXML + root.Add(visualTreeAsset.Instantiate()); + + // 注册一些事件 + _animatorField = root.Q("animator-field"); + _animatorField.RegisterValueChangedCallback(OnAnimatorChanged); + _animatorMessage = root.Q