fix(timeline-kit): 修复 Timeline 重复播放无法从头开始

This commit is contained in:
2026-04-19 14:58:35 +08:00
parent 5e5cc608df
commit d324ec3aa1
3 changed files with 14 additions and 199 deletions
-175
View File
@@ -1,175 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &110333134186518973
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4484639372422530251}
- component: {fileID: 2061319565109939302}
- component: {fileID: 4974988147973287594}
- component: {fileID: 8024805593218196570}
- component: {fileID: 7450747883882295617}
m_Layer: 0
m_Name: "\u8C03\u9152\u8499\u592A\u5947"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4484639372422530251
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 110333134186518973}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1776037001249689229}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &2061319565109939302
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 110333134186518973}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 315200563
m_SortingLayer: 16
m_SortingOrder: 0
m_Sprite: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 13.348837, y: 3.5348837}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 0
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!95 &4974988147973287594
Animator:
serializedVersion: 5
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 110333134186518973}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 0}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!320 &8024805593218196570
PlayableDirector:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 110333134186518973}
m_Enabled: 1
serializedVersion: 3
m_PlayableAsset: {fileID: 11400000, guid: 2d9baefeca916a942ab57a6714f7dc9e, type: 2}
m_InitialState: 0
m_WrapMode: 2
m_DirectorUpdateMode: 1
m_InitialTime: 0
m_SceneBindings:
- key: {fileID: 8951948241001910536, guid: 2d9baefeca916a942ab57a6714f7dc9e, type: 2}
value: {fileID: 4974988147973287594}
m_ExposedReferences:
m_References: []
--- !u!114 &7450747883882295617
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 110333134186518973}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 07d657d6b80509b4eb04f59afaa9aa2d, type: 3}
m_Name:
m_EditorClassIdentifier:
timelineName: "\u8C03\u9152\u8499\u592A\u5947"
director: {fileID: 8024805593218196570}
--- !u!1 &7609156256298449229
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1776037001249689229}
m_Layer: 0
m_Name: "Timeline\u7BA1\u7406\u5668"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1776037001249689229
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7609156256298449229}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4484639372422530251}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 4b35a149a0fc9214faaf88701fde8c77
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections;
using Cinemachine;
using UnityEngine;
@@ -217,16 +217,14 @@ namespace AibisDream
return;
}
// 先停止再播放
// 先停止、回到起点再播放(保证同一 Timeline 可重复从头播放)
CancelPendingResetToStartCoroutine();
director.stopped -= OnDirectorStopped;
if (director.state == PlayState.Playing)
{
director.Stop();
}
director.Stop();
ApplyPlaybackTimeZero();
_onCompleteCallback = onComplete;
if (ShouldSubscribeStopped(onComplete))
{
director.stopped += OnDirectorStopped;
@@ -235,6 +233,7 @@ namespace AibisDream
// 自动绑定 CinemachineBrain
AutoBindCinemachineBrain();
Debug.Log($"DirectorHandler {timelineName}: Play");
director.Play();
}
@@ -251,10 +250,8 @@ namespace AibisDream
CancelPendingResetToStartCoroutine();
director.stopped -= OnDirectorStopped;
if (director.state == PlayState.Playing)
{
director.Stop();
}
director.Stop();
ApplyPlaybackTimeZero();
if (ShouldSubscribeStopped(null))
{
@@ -264,6 +261,7 @@ namespace AibisDream
// 自动绑定 CinemachineBrain
AutoBindCinemachineBrain();
Debug.Log($"DirectorHandler {timelineName}: Play");
director.Play();
// 等待播放完成
@@ -329,10 +327,7 @@ namespace AibisDream
CancelPendingResetToStartCoroutine();
director.stopped -= OnDirectorStopped;
if (director.state == PlayState.Playing)
{
director.Stop();
}
director.Stop();
_savedPlayableAsset = director.playableAsset;
director.playableAsset = loadedAsset;
@@ -341,7 +336,9 @@ namespace AibisDream
// 自动绑定 CinemachineBrain(必须在 RebuildGraph 之后)
AutoBindCinemachineBrain();
ApplyPlaybackTimeZero();
_addressableHandle = loadedHandle;
_onCompleteCallback = onComplete;