Unity 中的 Animation
组件播放动画时,依赖 Time.deltaTime
进行采样计算播放进度,如果游戏中改变了 timeScale
的值,则使用 Animation
制作动画也会受到影响,例如游戏胜利时的慢动作特写镜头,如果是依赖 timeScale
实现的,那么此时 UI 上的动画效果也都会一起变慢。
Animation
组件与粒子系统类似,通过每一帧采样播放,查看源码可以看到如下接口:
/// <summary>
/// <para>Samples animations at the current state.</para>
/// </summary>
public void Sample()
{
Animation.INTERNAL_CALL_Sample(this);
}
因此只需要制作一个组件,在动画播放时,每一帧使用非缩放时间重新计算动画的播放进度,并采样播放,直接给出代码如下:
[RequireComponent(typeof(Animation))]
public class<