就是代替下面这个功能:

直接上代码
cs
private static void CreatePoseClips()
{
var modelImporter = AssetImporter.GetAtPath(AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0])) as ModelImporter;
var animation = modelImporter.defaultClipAnimations[0];
var list = new List<ModelImporterClipAnimation>();
for(int i = 0; i < animation.lastFrame; i+=2)
{
//创建剪辑
var ani = new ModelImporterClipAnimation();
ani.firstFrame = i;
ani.lastFrame = i + 1;
ani.name = $"ABC {i}";
list.Add(ani);
}
modelImporter.clipAnimations = list.ToArray();
modelImporter.SaveAndReimport();
}
defaultClipAnimations
Unity - Scripting API: ModelImporter.defaultClipAnimations
defaultClipAnimations就是根据TakeInfo创建的默认动画。建模软件编辑的时候动画都是在一个轨道上的,导出的时候也是一个动画。但是可以通过指定开始和结束帧创建剪辑,这个数据在ModelImporter.importedTakeInfos里面。
Unity - Scripting API: ModelImporter.importedTakeInfos
模型自带动画总共有多少帧
可以遍历importedTakeInfos,或者遍历defaultClipAnimations来获取最大的lastFrame,就是结束帧了。一般最后一个元素就是最后一个动画,用最后一个元素的lastFrame就行了
其他
在AssetPostProcessor里处理,这样每次导入的时候就能自动创建了