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
@@ -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;