Passion & UI
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user