Unity 编辑器中动画分割/创建动画剪辑

就是代替下面这个功能:

直接上代码

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里处理,这样每次导入的时候就能自动创建了

相关推荐
_Chipen1 小时前
lazy_vim_cmake_clangd_从零到自动补全与语法检查
linux·编辑器·vim
NRatel19 小时前
亚马逊S3的使用简记(游戏资源发布更新)
游戏·unity·amazon s3
SmalBox1 天前
【渲染流水线】[几何阶段]-[屏幕映射]以UnityURP为例
unity·渲染
QL.ql2 天前
vscode的ws环境,esp32s3连接wifi
ide·vscode·编辑器
SmalBox2 天前
【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
unity·渲染
_错错错2 天前
Vim 常用快捷键及插件
编辑器·vim·linux 开发工具
大白同学4212 天前
【Linux】编辑器vim的使用
linux·编辑器·vim
星火飞码iFlyCode2 天前
真实案例 | 如何用iFlyCode开发Webpack插件?
java·python·编辑器
东方不败耶耶耶2 天前
Notepad++插件开发实战指南
编辑器
SmalBox3 天前
【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
unity·渲染