文章目录

  • 什么是动画通知(Anim Notify)?
  • 动画通知的使用方法
  • 1. 直接在动画编辑器中添加动画通知
  • 2. 创建可复用的动画通知类(Anim Notify Class)
  • 补充


什么是动画通知(Anim Notify)?

动画通知就是UE4的动画回调事件,它会被绑定(注册)到动画时间轴的时间点上(可以精确到毫秒),当动画播放到该点就会触发事件并执行我们想要的操作。常见的使用情景比如:在奔跑动画中,我们想让角色脚部和地面接触的时刻播放音效。

如果没有动画通知,我们必须人工计算出这些时间位置,然后在那个时间通执行相应程序。这样很难做到精确,而且效率极低,最头疼的是一旦动画的长短节奏有了变化,一切又要重新计算。

动画通知的使用方法

1. 直接在动画编辑器中添加动画通知

在UE4的动画编辑器中的时间轴上,可以找到一个名为Notifies的区域,Notifies的下面是用来管理动画通知的轨道Track

notifyItemMoved卡顿怎么办 notifs_游戏开发

添加动画通知,必须把鼠标放到Notifies的范围内,然后在相应的时间点右键调出添加菜单,输入动画通知的名字(本例中命名为:PlayStepSound)就可以了

notifyItemMoved卡顿怎么办 notifs_游戏开发_02


动画通知的位置是可以调节的

notifyItemMoved卡顿怎么办 notifs_时间轴_03

接下来,我们就可以在使用了跑步动画的动画蓝图中调用PlayStepSound事件了

notifyItemMoved卡顿怎么办 notifs_复用_04

实际上,UE4已经为我们预设了很多种动画通知以满足播放音效,粒子特效这样的常见需求

notifyItemMoved卡顿怎么办 notifs_UE4_05

比如我们添加一个预设的PlaySound,可以直接在它的细节面板指定音效文件,连编程都省了。

notifyItemMoved卡顿怎么办 notifs_虚幻引擎_06


有朋友可能奇怪,类似PlaySound这样的“预设动画通知”是如何定义的,下面的部分咱们就来介绍一下。

2. 创建可复用的动画通知类(Anim Notify Class)

这些“预设动画通知”叫动画通知类(Anim Notify Class),是UE4提供的一种可复用的动画通知机制

自定义一个动画通知类

notifyItemMoved卡顿怎么办 notifs_游戏开发_07

动画通知类没有事件图

notifyItemMoved卡顿怎么办 notifs_游戏开发_08

两个需要override的方法是动画通知类的关键

notifyItemMoved卡顿怎么办 notifs_虚幻引擎_09

Received_Notify是当该事件触发时执行的逻辑

  • Mesh Comp:网格组件对象
  • Animation:动画实例对象

notifyItemMoved卡顿怎么办 notifs_UE4_10


GetNotifyName定义了这个动画通知在时间轴上显示的名称

notifyItemMoved卡顿怎么办 notifs_虚幻引擎_11

在动画编辑器中添加我们自定义的可复用动画通知

notifyItemMoved卡顿怎么办 notifs_UE4_12

补充

动画通知在动画编辑器的细节面板上还有一些参数,大家可以了解一下,需要时使用。

notifyItemMoved卡顿怎么办 notifs_虚幻引擎_13