解决unity中Animation Event无法正确保存的问题

解决unity中Animation Event无法正确保存的问题

最近在用Unity做一个学校的项目(电子科技大学的银杏黄),要求完成一个ARPG游戏,为了方便和效率,制作游戏角色动画的时候我自然使用了Mecanim动画系统,使用Animator的状态机来控制角色动画,可在实现让角色在做完技能的动作之后释放技能的这个功能的时候,遇到了一个不大不小的问题。

大家都知道,要实现类似的功能,最好的方法是给Animation Clip加上Animation Event,而几乎所有中文主流网站和技术博客,包括Unity Manual上,都会告诉你这样的方法,在此我贴个两个链接就不详细写了,Unity Manual中关于Animation Event的内容和雨松momo的Unity研究院中关于Animation Event的内容。

当然,我根据教程一通操作完成了各种功能并心满意足地保存关闭了Unity。然后第二天,为什么我的角色只会鬼畜地抽动而没有放技能啊!!!切到Animation的标签一看,发现我设置的Animation Event都消失了!!

这是怎么回事,我确信这不是我的锅,那只能是Unity官方的锅了
经过我的多方搜索,发现原因很坑爹:你无法在read-only的动画切片上添加Animation Event,这可怎么办,我又没有什么美工爸爸给我把动画搞成read&write。

终于在Unity Answer中找到了一个可能靠谱的方案,那个答主让你用快捷键ctrl-D把你想用的某个动画切片从FBX的动画集中复制到外面,成为一个单纯的动画切片(CSDN传图炸了,大家去试试就明白什么意思了),但是问题在于,这个新的单纯的Animation clip,是无法设置为humanoid的形式来匹配Mecanim动画的,那就和我们的初衷背道而驰了,虽然这样用老动画系统是没问题了。

和我遇到一样问题搜索来的读者看了我这么多废话,终于进入正题了:如何方便快捷地添加Animation Event(最好就在editor里完成,不需任何额外代码),又能在Mecanim中使用,还能正确地保存。

  1. 首先,你需要在Project视窗中找到你需要添加事件的那个动画切片(通常在FBX下和一群动画在一起),点击它。
  2. 在右边的(反正我是右边)inspector视窗中点击edit..按钮,进入动画切片编辑界面。
  3. 和本文主题无关的小贴士,确认rig标签下的Animation type和avatar definition,把所有avatar设为同一个。
  4. 在Animations标签下,滚到底下,找到Events,展开,你会看到有一个时间条和左边的add event按钮。用过之前那种添加方式的肯定秒懂的该怎么做的,唯一不方便的地方是你需要自己用下方预览play的按钮确定时间(那个小红线)的位置,并且需要自己输入Animation Event的回调函数。
  5. 滚到最下面点apply保存。
  6. 回到之前的Animation视窗,发现Animation Event已经添加好了。就是这样。

Unity Mecanim 发布了这么久,还是不能方便地支持这种小功能,还好在这种偏的地方预留了方法。希望过两个版本能改进到用最上面的方法也能正常使用吧。

你可能感兴趣的:(Unity,unity,动画,编辑器,游戏)