引言
在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 Controller和Animation 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深入系列