最近有个需求要根据动画中的事件调用脚本中的功能,完成一些特效音效,技能音效等播放功能。
一个AnimationClip添加事件非常简单,只需在编辑其中双击这个文件,或者使用快捷键Ctrl+6,即可打开动画编辑。 打开的动画编辑窗口,在需要的位置右键或者点击图中按钮即可。
在当前经手的项目中,动画文件基本都是从Maya中导出的.fbx文件,这时使用上述方法是不可行的,因为这个文件下的Clip文件是只读的
因此,需要选中这个模型文件,在Inspector面板添加事件,操作方法和一类似,最后要点Apply应用,修改的是meta文件。 从图中可以看到,时间轨为归一化时间,并且很难定位到精确的时间点,为了更方便美术和策划同学能够自己添加事件,开发了一个工具简化操作。
关键代码:
//获得对应模型的ModelImport,拿到其中的Animation数据 ModelImporter modelImporter = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(selectObj)) as ModelImporter; clipAnimations = modelImporter.clipAnimations; //拿到动画文件后 编辑其中的events属性,可以添加事件或者修改事件信息 //此处省略一些代码 clipAnimations[0].events = evts; //保存修改后的数据 modelImporter.clipAnimations = clipAnimations; modelImporter.SaveAndReimport(); AssetDatabase.Refresh();注意图中的Time为归一化时间。
这样就能很精准的为动画文件添加或者删除事件了。