From c6c76666efcc3e697f61720148e313f0be9d8517 Mon Sep 17 00:00:00 2001 From: Ding Yuntian <1491671119@qq.com> Date: Wed, 22 Jul 2026 02:32:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B8=A7=E5=8A=A8=E7=94=BB=E7=B3=BB?= =?UTF-8?q?=E7=BB=9FTimeline=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FrameAnimationEditorServices.cs | 4 +- .../FrameAnimationGraphEditorWindow.cs | 44 +- .../FrameAnimationImportModels.cs | 8 +- .../FrameAnimationImportService.cs | 15 + .../FrameAnimationPlayerEditor.cs | 7 + .../FrameAnimation/FrameAnimationPreview.cs | 12 +- .../FrameAnimationSpriteUtility.cs | 102 ++- .../Editor/FrameAnimation/FrameClipEditor.cs | 15 +- .../FrameAnimation/FrameClipEditorWindow.cs | 360 +++++++++++ .../FrameClipEditorWindow.cs.meta | 11 + .../FrameAnimation/FrameClipImportService.cs | 333 ++++++++++ .../FrameClipImportService.cs.meta | 11 + .../FrameAnimation/FrameClipPlayerEditor.cs | 51 ++ .../FrameClipPlayerEditor.cs.meta | 11 + .../Preview/PreviewSampleGraph.asset | 24 + .../FrameAnimation/Runtime/AssemblyInfo.cs | 1 + .../Runtime/FrameAnimationData.cs | 28 + .../Runtime/FrameAnimationPlayer.cs | 9 + .../Runtime/FrameAnimationResolver.cs | 7 +- .../FrameAnimation/Runtime/FrameClip.cs | 18 + .../FrameAnimation/Runtime/FrameClipPlayer.cs | 583 ++++++++++++++++++ .../Runtime/FrameClipPlayer.cs.meta | 11 + Assets/Scripts/FrameAnimation/Timeline.meta | 8 + .../AibisDream.FrameAnimation.Timeline.asmdef | 18 + ...sDream.FrameAnimation.Timeline.asmdef.meta | 7 + .../FrameAnimation/Timeline/AssemblyInfo.cs | 5 + .../Timeline/AssemblyInfo.cs.meta | 11 + .../FrameAnimation/Timeline/Editor.meta | 8 + ...ream.FrameAnimation.Timeline.Editor.asmdef | 21 + ...FrameAnimation.Timeline.Editor.asmdef.meta | 7 + .../FrameAnimationTimelineClipEditor.cs | 51 ++ .../FrameAnimationTimelineClipEditor.cs.meta | 11 + .../Timeline/FrameAnimationTimelineClip.cs | 76 +++ .../FrameAnimationTimelineClip.cs.meta | 11 + .../Timeline/FrameAnimationTrack.cs | 223 +++++++ .../Timeline/FrameAnimationTrack.cs.meta | 11 + ...Dream.FrameAnimation.Tests.EditMode.asmdef | 5 +- .../EditMode/FrameAnimationTimelineTests.cs | 307 +++++++++ .../FrameAnimationTimelineTests.cs.meta | 11 + .../FrameClipStandaloneImportTests.cs | 196 ++++++ .../FrameClipStandaloneImportTests.cs.meta | 11 + ...Dream.FrameAnimation.Tests.PlayMode.asmdef | 5 +- .../PlayMode/FrameAnimationPlayerTests.cs | 97 +++ .../FrameAnimationTimelinePlayModeTests.cs | 144 +++++ ...rameAnimationTimelinePlayModeTests.cs.meta | 11 + Docs/FrameAnimationTimeline使用说明.md | 25 + Docs/FrameAnimationTimeline使用说明.md.meta | 7 + Docs/独立FrameClip播放器与编辑器验收.md | 26 + 48 files changed, 2947 insertions(+), 31 deletions(-) create mode 100644 Assets/Editor/FrameAnimation/FrameClipEditorWindow.cs create mode 100644 Assets/Editor/FrameAnimation/FrameClipEditorWindow.cs.meta create mode 100644 Assets/Editor/FrameAnimation/FrameClipImportService.cs create mode 100644 Assets/Editor/FrameAnimation/FrameClipImportService.cs.meta create mode 100644 Assets/Editor/FrameAnimation/FrameClipPlayerEditor.cs create mode 100644 Assets/Editor/FrameAnimation/FrameClipPlayerEditor.cs.meta create mode 100644 Assets/Scripts/FrameAnimation/Runtime/FrameClipPlayer.cs create mode 100644 Assets/Scripts/FrameAnimation/Runtime/FrameClipPlayer.cs.meta create mode 100644 Assets/Scripts/FrameAnimation/Timeline.meta create mode 100644 Assets/Scripts/FrameAnimation/Timeline/AibisDream.FrameAnimation.Timeline.asmdef create mode 100644 Assets/Scripts/FrameAnimation/Timeline/AibisDream.FrameAnimation.Timeline.asmdef.meta create mode 100644 Assets/Scripts/FrameAnimation/Timeline/AssemblyInfo.cs create mode 100644 Assets/Scripts/FrameAnimation/Timeline/AssemblyInfo.cs.meta create mode 100644 Assets/Scripts/FrameAnimation/Timeline/Editor.meta create mode 100644 Assets/Scripts/FrameAnimation/Timeline/Editor/AibisDream.FrameAnimation.Timeline.Editor.asmdef create mode 100644 Assets/Scripts/FrameAnimation/Timeline/Editor/AibisDream.FrameAnimation.Timeline.Editor.asmdef.meta create mode 100644 Assets/Scripts/FrameAnimation/Timeline/Editor/FrameAnimationTimelineClipEditor.cs create mode 100644 Assets/Scripts/FrameAnimation/Timeline/Editor/FrameAnimationTimelineClipEditor.cs.meta create mode 100644 Assets/Scripts/FrameAnimation/Timeline/FrameAnimationTimelineClip.cs create mode 100644 Assets/Scripts/FrameAnimation/Timeline/FrameAnimationTimelineClip.cs.meta create mode 100644 Assets/Scripts/FrameAnimation/Timeline/FrameAnimationTrack.cs create mode 100644 Assets/Scripts/FrameAnimation/Timeline/FrameAnimationTrack.cs.meta create mode 100644 Assets/Tests/FrameAnimation/EditMode/FrameAnimationTimelineTests.cs create mode 100644 Assets/Tests/FrameAnimation/EditMode/FrameAnimationTimelineTests.cs.meta create mode 100644 Assets/Tests/FrameAnimation/EditMode/FrameClipStandaloneImportTests.cs create mode 100644 Assets/Tests/FrameAnimation/EditMode/FrameClipStandaloneImportTests.cs.meta create mode 100644 Assets/Tests/FrameAnimation/PlayMode/FrameAnimationTimelinePlayModeTests.cs create mode 100644 Assets/Tests/FrameAnimation/PlayMode/FrameAnimationTimelinePlayModeTests.cs.meta create mode 100644 Docs/FrameAnimationTimeline使用说明.md create mode 100644 Docs/FrameAnimationTimeline使用说明.md.meta create mode 100644 Docs/独立FrameClip播放器与编辑器验收.md diff --git a/Assets/Editor/FrameAnimation/FrameAnimationEditorServices.cs b/Assets/Editor/FrameAnimation/FrameAnimationEditorServices.cs index 53ca236e8..d9434ca82 100644 --- a/Assets/Editor/FrameAnimation/FrameAnimationEditorServices.cs +++ b/Assets/Editor/FrameAnimation/FrameAnimationEditorServices.cs @@ -122,7 +122,7 @@ namespace AibisDream.FrameAnimation.Editor { if (clip == null || !clip.IsImported) { - return "Manual"; + return clip != null && clip.HasStandaloneImportSource ? "Standalone Source" : "Manual"; } var sourceId = clip.ImportInfo?.ImportSourceId; if (sourceNames != null && !string.IsNullOrEmpty(sourceId) && @@ -232,7 +232,7 @@ namespace AibisDream.FrameAnimation.Editor if (clip.IsImported || AssetDatabase.IsSubAsset(clip) || string.IsNullOrEmpty(AssetDatabase.GetAssetPath(clip))) { - error = "只能添加独立 .asset 形式的 Manual Clip。"; + error = "只能添加独立 .asset 形式、且不由 Graph ImportSource 管理的 Clip。"; return false; } if (graph.Clips.Contains(clip)) diff --git a/Assets/Editor/FrameAnimation/FrameAnimationGraphEditorWindow.cs b/Assets/Editor/FrameAnimation/FrameAnimationGraphEditorWindow.cs index e9244f119..6c328f3cf 100644 --- a/Assets/Editor/FrameAnimation/FrameAnimationGraphEditorWindow.cs +++ b/Assets/Editor/FrameAnimation/FrameAnimationGraphEditorWindow.cs @@ -68,6 +68,7 @@ namespace AibisDream.FrameAnimation.Editor private SerializedObject clipSerializedObject; private FrameClip frameListClip; private ReorderableList frameList; + private bool frameListEditable; private readonly FrameAnimationPreviewCoordinator previewCoordinator = new FrameAnimationPreviewCoordinator(); private readonly List previewTimelineSliders = new List(); private readonly List