#|Unity动画丨动画帧事件

目的: 当模型动画播放到一定进度后,执行某函数

方法: 添加的方法根据模型的不同暂时分为两种:
1、模型为美术人员制作,带有动画:
在模型源文件的Animation-Events处添加即可
#|Unity动画丨动画帧事件
文章图片
#|Unity动画丨动画帧事件
文章图片


2、动画为自己在Unity中给模型制作的:
我们点击我们自己的模型,即使做成预制体,也会发现右侧Inspector面板并没有Animation-Events。我们需要如下操作
a、选中你做的Animtion,进入下面界面。
b、点击AddEvents添加帧时间。将物体挂在右侧的Object,填上要执行的方法名和传入的参数。
c、你可能想修改或删掉帧事件时找不到帧事件在哪。
帧事件就在第二个红框那。需要你放大放大再放大,才能找得到它。
d、你可以在同一个位置,同一帧添加多个帧事件。
#|Unity动画丨动画帧事件
文章图片


注意: 以上两种方法Object赋值的都是你的脚本。
你的脚本必须挂在这个物体带有Animator的物体上(其他物体不行)。否则会出现如下错误:

'NoviceKnight' AnimationEvent 'Skode_ActiveIdleLoop' has no receiver! Are you missing a component?
【#|Unity动画丨动画帧事件】#|Unity动画丨动画帧事件
文章图片


Question: 关于无法给物体创建Animation:
情境1:
在Hierarchy面板,将一个物体A放入另一个预制体B中。这时再点击A物体,就发现Animation面板显示的就是B物体的属性了。并且显示的这个Animation还没有A物体的属性。也就意味着我们无法给A物体添加动作。
解决办法:
将A物体先拖到预制体B的外面,先给A创建Animation,再拖入到预制体B中去。

情境2:
应该点击的是创建了Animation的物体,却点击了该物体的Animation clip。
解决办法:
点该物体,开始录制动画。

录制的动画位置发生变化:
原因之一:
在某物体B外面给A录制的动画,最后将A移动到B里面去了。发现位置不对。
解决办法:
在B物体里面对A进行录制动画。

    推荐阅读