当我们导入动画到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<AnimationClip>(fbxPath); //获取FBX上的animationClip
if(fbxClip == null)
{
Debug.Log("当前选择的文件不是带有AnimationClip的FBX文件");
}
else
{
EditorUtility.CopySerialized(fbxClip, clip); //复制
AssetDatabase.CreateAsset(clip, "Assets/AnimationClip/" + name + ".anim"); //生成文件
}
}
}
}
在Project页面选择你需要分离动画的FBX文件,使用工具就可以完成了。