fix(timeline-kit): 避免未播放 Timeline 读档时被 Reset

This commit is contained in:
2026-06-29 15:59:05 +08:00
parent e41756d0f0
commit 08b8f34bde
@@ -33,6 +33,7 @@ namespace AibisDream
private PlayableAsset _savedPlayableAsset;
private Coroutine _pendingResetToStartCoroutine;
private string _lastAddressableKey;
private bool _hasEverAppliedPlayback;
#if UNITY_EDITOR
/// <summary>
@@ -97,6 +98,12 @@ namespace AibisDream
if (director == null) return;
director.time = 0;
director.Evaluate();
MarkPlaybackApplied();
}
private void MarkPlaybackApplied()
{
_hasEverAppliedPlayback = true;
}
/// <summary>
@@ -413,7 +420,8 @@ namespace AibisDream
{
directorName = timelineName,
isActive = gameObject.activeSelf,
loadedAddressableKey = _lastAddressableKey
loadedAddressableKey = _lastAddressableKey,
hasEverAppliedPlayback = _hasEverAppliedPlayback
};
if (director == null)
@@ -422,6 +430,12 @@ namespace AibisDream
return entry;
}
if (!_hasEverAppliedPlayback)
{
entry.phase = TimelinePlaybackPhase.Stopped.ToString();
return entry;
}
var duration = director.duration;
var time = director.time;
if (duration > 0 && time >= duration - 0.01)
@@ -455,7 +469,11 @@ namespace AibisDream
switch (phase)
{
case TimelinePlaybackPhase.AtStart:
Reset();
if (entry.hasEverAppliedPlayback)
{
Reset();
}
break;
case TimelinePlaybackPhase.AtEnd:
if (!string.IsNullOrEmpty(entry.loadedAddressableKey))
@@ -468,8 +486,8 @@ namespace AibisDream
}
break;
case TimelinePlaybackPhase.Stopped:
default:
Reset();
break;
}
}
@@ -486,6 +504,7 @@ namespace AibisDream
}
director.Stop();
MarkPlaybackApplied();
}
private IEnumerator RestoreAtEndFromAddressable(string addressableKey)