Passion & UI

This commit is contained in:
SoulliesOfficial
2026-06-12 17:11:39 -04:00
parent 7bc1e1722c
commit 6d7ebc5825
3444 changed files with 865284 additions and 463132 deletions

View File

@@ -96,7 +96,7 @@ namespace SLSUtilities.FunctionalAnimation
/// 通过动画名称查找并播放动作。
/// </summary>
public virtual bool Play(string animationName, float speedMultiplier = 1f, float transitionDuration = 0.1f,
bool isNormalizedTransition = false, List<FuncAnimPayloadBase> runtimeStartEvents = null)
bool isNormalizedTransition = false, float normalizedStartTime = -1f, List<FuncAnimPayloadBase> runtimeStartEvents = null)
{
if (!collection.TryGetValue(animationName, out FuncAnimData funcAnimData))
{
@@ -104,14 +104,14 @@ namespace SLSUtilities.FunctionalAnimation
Debug.LogWarning($"[{GetType().Name}] 动作库中未找到名为 '{animationName}' 的动作数据。");
return false;
}
return Play(funcAnimData, speedMultiplier, transitionDuration, isNormalizedTransition, runtimeStartEvents);
return Play(funcAnimData, speedMultiplier, transitionDuration, isNormalizedTransition, normalizedStartTime, runtimeStartEvents);
}
/// <summary>
/// 物理执行动作播放的核心实现。
/// </summary>
public virtual bool Play(FuncAnimData data, float speedMultiplier = 1f, float transitionDuration = 0.1f,
bool isNormalizedTransition = false, List<FuncAnimPayloadBase> runtimeStartEvents = null)
bool isNormalizedTransition = false, float normalizedStartTime = -1f, List<FuncAnimPayloadBase> runtimeStartEvents = null)
{
if (data == null || Animator == null) return false;
@@ -136,8 +136,8 @@ namespace SLSUtilities.FunctionalAnimation
// 3. 计算起始偏移并执行 Animator 融合过渡
float clipLength = currentClip != null ? currentClip.length : 1f;
float frameRate = currentClip != null ? currentClip.frameRate : 30f;
currentRuntimeFuncAnim.currentPlayTime = animInfo.overrideStartFrame / frameRate;
currentRuntimeFuncAnim.currentPlayTime = normalizedStartTime < 0f ? animInfo.overrideStartFrame / frameRate : normalizedStartTime;
float normalizedTimeOffset = clipLength > 0f ? currentPlayTime / clipLength : 0f;
float normalizedTransitionDuration = isNormalizedTransition ? transitionDuration : transitionDuration / oldClipLength;