Unity 从FBX中分离动画工具

当我们导入动画到Unity中时,会发现FBX和动画是绑定在一起的,当然我们可以展开FBX选择动画按Ctrl + D将动画单独拿出来并且可以修改,但是很多时候我们需要用到工具。下面就是使用工具批量将FBX中的动画文件提出来的工具。

代码如下:(脚本文件需要放在Editor文件夹下)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;

public class GetAnimation
{
    [MenuItem("AnimationTool/GetAnimation",true)]
    static bool NotSelection()
    {
        return Selection.activeObject;     //判断是否选择的物体 没选择的话无法执行工具
    }

    [MenuItem("AnimationTool/GetAnimation")]
   static void Get()
    {
        string targetPath = Application.dataPath + "/AnimationClip";          //目录AnimationClip
        if (!Directory.Exists(targetPath))
        {
            Directory.CreateDirectory(targetPath);     //如果目录不存在就创建一个
        }
        UnityEngine.Object[] objects = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.Unfiltered);     //获取所有选中的物体
        foreach(UnityEngine.Object o in objects)     //遍历选择的物体
        {
            AnimationClip clip = new AnimationClip();      //new一个AnimationClip存放生成的AnimationClip
            string fbxPath = AssetDatabase.GetAssetPath(o);       //FBX的地址
            string name = o.name;     //FBX的名字
            AnimationClip fbxClip = AssetDatabase.LoadAssetAtPath(fbxPath);     //获取FBX上的animationClip
            if(fbxClip == null)
            {
                Debug.Log("当前选择的文件不是带有AnimationClip的FBX文件");
            }
            else
            {
                EditorUtility.CopySerialized(fbxClip, clip);    //复制
                AssetDatabase.CreateAsset(clip, "Assets/AnimationClip/" + name + ".anim");    //生成文件
            }    
        }
    }
}

在Project页面选择你需要分离动画的FBX文件,使用工具就可以完成了。

你可能感兴趣的:(Unity 从FBX中分离动画工具)