![bf3552a605d9703deb635e37e4c9b30d.png](https://i-blog.csdnimg.cn/blog_migrate/c0f12fa5bdbbd68b4a26e505af5dab6a.png)
什么是动画通知(Anim Notify)?
动画通知就是UE4的动画回调事件,它会被绑定(注册)到动画时间轴的时间点上(可以精确到毫秒),当动画播放到该点就会触发事件并执行我们想要的操作。简而言之,动画通知是一种动画调用游戏逻辑的机制。
常见的使用情景比如:在奔跑动画中,我们想让角色脚部和地面接触的时刻播放音效。
如果没有动画通知,我们必须人工计算出这些时间位置,然后在那个时间通执行相应程序。这样很难做到精确,而且效率极低,最头疼的是一旦动画的长短节奏有了变化,一切又要重新计算。
动画通知的使用方法
1. 直接在动画编辑器中添加动画通知
在UE4的动画编辑器中的时间轴上,可以找到一个名为Notifies
的区域,Notifies
的下面是用来管理动画通知的轨道Track
![f91d47863eb279b36185c99a0c619d50.png](https://i-blog.csdnimg.cn/blog_migrate/0b22af297693a1fc4e8dbe3ad7f7a908.jpeg)
添加动画通知,必须把鼠标放到Notifies
的范围内,然后在相应的时间点右键调出添加菜单,输入动画通知的名字(本例中命名为:PlayStepSound)就可以了
![c80121afd27ed687b2f8b1e12de2d7ed.png](https://i-blog.csdnimg.cn/blog_migrate/e19dd935457edfc61f78d9b58e2f0159.png)
动画通知的位置是可以调节的
![3c108bd3c8255620d35e2437ac7ad7c4.png](https://i-blog.csdnimg.cn/blog_migrate/e9cb14acf36c519769f5bbf975cf0f90.png)
接下来,我们就可以在使用了跑步动画的动画蓝图中调用PlayStepSound
事件了
![75f3d7565464e613f602bae8aa5f7a6d.png](https://i-blog.csdnimg.cn/blog_migrate/3f99654b29a485199f34d4391a17ff39.jpeg)
实际上,UE4已经为我们预设了很多种动画通知以满足播放音效,粒子特效这样的常见需求
![9c0b811d94e4a23428fcdd834da81927.png](https://i-blog.csdnimg.cn/blog_migrate/14fcf4e18e7b906e435449226507004f.png)
比如我们添加一个预设的PlaySound,可以直接在它的细节面板指定音效文件,连编程都省了。
![431a9533ff729f62f8937aef7f243865.png](https://i-blog.csdnimg.cn/blog_migrate/23e0f4751361c210403de6c33205bd00.jpeg)
有朋友可能奇怪,类似PlaySound
这样的“预设动画通知”是如何定义的,下面的部分咱们就来介绍一下。
2. 创建可复用的动画通知类(Anim Notify Class)
这些“预设动画通知”叫动画通知类(Anim Notify Class),是UE4提供的一种可复用的动画通知机制
自定义一个动画通知类
![1ab593b387a0838113c4ae9cce90259b.png](https://i-blog.csdnimg.cn/blog_migrate/a588b9706b753a466ce04c48b9e794cd.jpeg)
动画通知类没有事件图
![bf9a1d3a190d7d764993005839c483bf.png](https://i-blog.csdnimg.cn/blog_migrate/2264d6a9445a8f95061547c8c529364b.jpeg)
两个需要override的方法是动画通知类的关键
![32bc421b54b9f98ea4cabbc8e1437868.png](https://i-blog.csdnimg.cn/blog_migrate/9f0c2e545a514a276caedc670037e209.png)
Received_Notify
是当该事件触发时执行的逻辑
Mesh Comp
:网格组件对象Animation
:动画实例对象
![c89f1bc6e9d3f63c343dbd75c5aff32a.png](https://i-blog.csdnimg.cn/blog_migrate/2d17f237c7a63ad1cd9b05a20774d333.jpeg)
GetNotifyName
定义了这个动画通知在时间轴上显示的名称
![0dad78cdb5875e2ba7327afe90ff2452.png](https://i-blog.csdnimg.cn/blog_migrate/398fd9a35b92327610ea23963be52ece.jpeg)
在动画编辑器中添加我们自定义的可复用动画通知
![14902e2bf9880ff8be10094f077e5437.png](https://i-blog.csdnimg.cn/blog_migrate/a4bc93d80dbbb55fb6bc46d30e7f5287.png)
补充
动画通知在动画编辑器的细节面板上还有一些参数,大家可以了解一下,需要时使用。
![359deb14ac1a09c97c83f57bb39bc43c.png](https://i-blog.csdnimg.cn/blog_migrate/1dd20c7ae24c2492465335acd7508076.jpeg)