【动画片段】
前文我们介绍了骨骼动画,在Unity中骨骼动画的部分静态数据存储在SkinedMeshRender中,而另一部分动态的关键帧数据就是存储在AnimationClip中的。
关键帧数据来自与FBX、OBJ等动画模型文件,可以在动画导入后的Animation选项卡中查看动画,Unity将其分为了四个区域,可以在动画预览区域,播放动画和查看特定帧的动画。
(A区和B区是在运行时并不会用到,C区严格来说,属于动作系统的一部分和动画片段没关系,但因为和动画系统联系紧密,会和AnimationClip关联起来,在后文中再详细说说)
预览动画所需的数据就在AniamtionClip中,图中所示的即为AniamtionClip文件:
可以双击来查看具体的动画数据,如下所示:
由于这里的AniamtionClip数据来自动画模型文件,所以是不可以修改的。在win的资源管理器中,也看不到这个文件,因为在Unity工程中看到的是Object而不是Asset。(Object与Asset的区别)
可以将AnimationClip的数据Copy一遍,生成单独的文件后,即可编辑。Unity提供了交互的方式,但可以通过代码自动生成,例如:
public void CopyAnimationClip(GameObject go)
{
AnimationClip[] clips = AnimationUtility.GetAnimationClips(go);
foreach (AnimationClip clip in clips)
{
AnimationClip newClip = new AnimationClip();
newClip.name = clip.name + "_auto";
newClip.frameRate = clip.frameRate;
newClip.legacy = clip.legacy;
var setting = AnimationUtility.GetAnimationClipSettings(clip);
AnimationUtility.SetAnimationClipSettings(newClip, setting);
EditorCurveBinding[] bindings = Animation