在搞动作编辑器的时候有这个需求,美术给了一 套动作的动画片段(起手到收手),现在需要到起手中增加一段其他的动作,然后收手。项目是使用Animator,决定使用三个动作片段衔接来完成这个动作。
根据指定的起始帧将AnimationClip截取生成的AnimationClip。
可以利用Animation.AddClip(AnimationClip clip, string newName, int firstFrame, int lastFrame)
Animation tAnimation = GameObject.Instantiate(new GameObject()).AddComponent<Animation>();
selectClip.legacy = true;
tAnimation.AddClip(selectClip, clipName, beginFrame, endFrame);
AnimationClip newClip = tAnimation.GetClip(clipName);
newClip.frameRate = selectClip.frameRate;
var asset = GameObject.Instantiate(newClip);
asset.legacy = false;
AssetDatabase.CreateAsset(asset, savePath + "/" + clipName + ".anim");
AssetDatabase.SaveAssets();
//销毁上面创建的Gameobject
//...
在Unity 5.x后,如果需要使用Animation组件,则需要把AnimationClip 的Legacy设置成true,AnimationClip.legacy这个是标识是否是使用在旧动画系统,这里需要利用Animation的AddClip方法间接得到新的AnimationClip , 否则是添加不进去的。