Unity 动画系统 Animation 和 Animator 联系与区别

👈返回目录 


引言

  在unity的老版本中我们只有Animation组件,在4.6版本以后则增添了Animator组件,如果只是控制一个动画的播放我们则用Animaton组件,如果是很多动画之间相互转换则使用Animator组件,它们两者的区别就是Animator有一个动画控制器(俗称动画状态机),使用它来进行动画切换是非常方便的,但缺点是占用内存比Animaton组件大。


常用类

  Animator:动画控制器,控制Mecanim动画系统的接口,用来管理多个动画;

  Animation:用于播放动画,老版中单独的一个Animation也可以完成动画的播放和切换,不过状态切换之类的需要程序猿代码控制。在新版中,状态管理部分交给了Animator;

  AnimationClip:动画剪辑片段,储存基于关键帧的动画,是用于Animation来播放动画;

  AnimationState:动画状态,用来改变单一动画的播放速度、权重、时间、层级、播放Mode,以及混合模式;

  AnimationEvent:动画事件,用于某种条件下触发自定义函数;

  StateMachineBehaviour: 动画状态机管理器拓展类,脚本继承了该类之后,绑定到Animator上某State上面。当状态发生变化,可以重载响应函数。类似 触发器的响应函数;


关于区别

相对于老版Animation,新版的Animator加入了动画状态机。

 

 

相对于老版Animation,新版的Animator加入了骨骼Avatar。

 

 


关于Animator文件和组件的认识

要注意的是Animator ControllerAnimation Clip都是文件(File),Animator则是GameObject上的一个组件(Component),不能混为一谈。

由下图可以看出,组件是组件,文件是文件。

 

 


组件添加的区别

经过试验我发现

  当先手动给物体添加了Animation组件之后,再通过Window->Animation。创建的是Animation。(老版的Animation)

  如果不添加Animation组件,直接Window->Animation。创建的是Animation和Animator一起。(新版的Animator)

还有

  单独使用Animation(老版)可以移动位置等,但是就是不能播放sprite,但是使用Animator就可以播放Sprite。这应该是Unity的bug。


结尾

Animation和Animator分别制作动画的小demo请戳👈

Animator深入系列

http://www.cnblogs.com/hont/p/5097407.html

posted @ 2018-11-15 17:55  激情1995  阅读(8627)  评论(0编辑  收藏  举报