Unity现存两套动画系统:Legacy动画系统和Mecanim动画系统。
其中Legacy动画系统为旧版动画系统
虽然建议在大多数情况下使用Mecanim,尤其是在处理人形动画时,但旧版动画系统仍可用于各种上下文。例如,您可以在处理旧版动画和代码(在 Unity 4.0 之前创建的内容)时使用它。另一个用例是使用时间以外的参数控制动画剪辑(例如,用于控制瞄准角度)。 有关旧版动画系统的信息,请参阅此部分
Unity 打算通过合并工作流到 Mecanim 中,逐步淘汰所有情况下的旧版动画系统。
Animator组件由Animator Controller控制,在Animator Controller中的状态为一个个Animation Clip,animation可由动画软件连同骨骼导出
旧版Legacy动画系统使用Animation组件,添加Animation组件到物体上,在组件上挂载相应的Animation Clip来实现对动画的控制。 使用Animation组件播放动画时需要将在Animation Clip的Inspector面板下打开debug模式,勾选Legacy。
Animation不存在暂停播放的接口,可以通过遍历Animation的AnimationState,将所有AnimationState的速度speed设置为0来实现动画的暂停,继续播放时同样进行遍历来将速度变为1。
public void Pause(Animation animation)
{
foreach (AnimationState state in animation)
{
state.speed = 0;
}
}
新版的动画系统使用Animator组件,添加Animator组件到物体上,在组件上挂载相应的Animator Controller来实现对动画的控制。适合用于如角色运动等需要多种动画状态切换的应用场景。
Timeline属于unity的电影序列工具,可用于动作、声音、事件、视频序列的制作,通过Playable Director组件来实现对timeline的控制。
PlayerDirector拥有的接口比较丰富,很适合过场动画及需要脚本来控制场景中某个动画的应用场景。
Signal有三个组成部分:Signal Asset(信号资源),Signal Emitter(信号发射器)和SignalReceiver(信号接收器)。
如果信号接收器与PlayableDirector在同一个物体上时可直接Markers上添加信号发射器。不在一个物体上时可以将信号接收器添加到timeline的轨道上。