如图,导入包含动画的fbx模型并设置动画类型为Legacy,模型自带动画是不能用Unity自带的Animation工具编辑的,因为它是只读的。
要想编辑动画就需要新建一个AnimationClip文件,并把模型动画的数据拷贝到新建文件里。
步骤非常简单:
1.获取模型自带的动画clip:
var fbx = AssetDatabase.LoadAssetAtPath<GameObject>(fbxName); var animClip = fbx.GetComponent<Animation>().clip;2.创建新的AnimationClip,并把模型动画clip数据拷贝到新建clip:
AnimationClip newClip = new AnimationClip(); EditorUtility.CopySerialized(animClip, newClip);3.保存新的动画文件:
string animFile = string.Format("{0}/{1}.anim", savePath, animClip.name); AssetDatabase.CreateAsset(newClip, animFile);使用提取出的动画Clip就可以编辑了
完整代码:
public static void ModifyModels() { EditorUtility.DisplayProgressBar("Progress", "Create Anim...", 0); string[] dirs = { "Assets/Toon Character Pack/Models/Anim" }; var asstIds = AssetDatabase.FindAssets("t:Model", dirs); int count = 0; for (int i = 0; i < asstIds.Length; i++) { string path = AssetDatabase.GUIDToAssetPath(asstIds[i]); var fbx = AssetDatabase.LoadAssetAtPath<GameObject>(path); var animClip = fbx.GetComponent<Animation>().clip; string animFile = string.Format("{0}/{1}.anim", dirs[0], animClip.name); AnimationClip newClip = new AnimationClip(); EditorUtility.CopySerialized(animClip, newClip); AssetDatabase.CreateAsset(newClip, animFile); count++; EditorUtility.DisplayProgressBar("Create Anim", fbx.name, count / (float)asstIds.Length); } EditorUtility.ClearProgressBar(); }