UE4之Event Dispatchers讲解

Event Dispatchers

事件调度程序,可以全局调用。

提示

当前文章使用的版本是v4.16。

1. 创建一个事件调度程序

进入关卡蓝图(其他事件蓝图也可以),点击 Event Dispatchers后面的 + 号,命名后拖动到场景中。
UE4之Event Dispatchers讲解

2. 参数讲解

  1. Call 呼叫,触发绑定事件。
  2. Bind 绑定事件。
  3. Unbind 取消绑定。
  4. Unbind all 取消绑定所有。
  5. Event 创建一个事件,和 Add Custom Event节点一样。
  6. Assign 创建一个绑定了事件的绑定事件节点。

3. 展示一下

  1. 在同一个蓝图中展示。
    UE4之Event Dispatchers讲解
  2. 在不同的蓝图中展示,在关卡蓝图中呼叫类蓝图中的事件,需要创建一个蓝图类,然后实例化。
    1. 创建一个蓝图类
      UE4之Event Dispatchers讲解
    2. 在蓝图类中创建一个事件调度器,然后绑定一个事件。
      UE4之Event Dispatchers讲解
    3. 在关卡蓝图中触发蓝图类中的事件,但是必须要有Target目标类才行。
      UE4之Event Dispatchers讲解

4. 一个小例子

  1. 首先创建两个蓝图类
    UE4之Event Dispatchers讲解
  2. 第一个类作为接收类,第二个类为触发类。首先说明一下总体效果。在游戏开始时候场景中的椅子向桌子移动,直到碰到桌子为止。然后桌子开始旋转。先写椅子类的蓝图。
    UE4之Event Dispatchers讲解
    1. 首先,添加 EventBeginPlay 事件,在游戏开始时候触发,判断是否需要移动是就移动不是就旋转桌子。
    2. 每次判断都会增加椅子的X的方向的值,然后延时一定时间后再次触发,产生迭代。
    3. 也可以使用定时器来增加值,碰到后就清除定时器。在这里就不列出此种方法。

  3. 当为false,也就是碰撞到了目标后就不产生迭代,转而触发桌子类的蓝图事件,所以我们需要获取到桌子类。首先先创建一个变量,将类型改变为桌子类的类名,然后转化为公共变量。
    UE4之Event Dispatchers讲解

  4. 回到操作界面,改变以下值为桌子类。然后回到蓝图界面,创建节点Call Rotate将变量拖出来赋予给目标值,当然需要事先为第一个类创建一个Event Dispatchers命名为Rotate,在第六步中可看见。
    UE4之Event Dispatchers讲解
  5. 需要检测碰撞,进入viewport界面,添加一个box组件,然后通过检测box的碰撞来触发改变bool值使其不再移动。
    UE4之Event Dispatchers讲解
  6. 现在来写第一个蓝图的类,在这个类中,只需要创建一个 Event Dispatchers事件调度程序,然后绑定一个事件即可。
    UE4之Event Dispatchers讲解
    1. 首先,在游戏开始的时候绑定一个事件,触发事件后旋转桌子一圈。TimeLine是该事件的核心,通过TimeLine返回来的值不断的改变桌子的角度,达到旋转动画的效果。
    2. 也可以使用其他办法来改变,比如迭代或者定时器。

5. 总结

  1. Event Dispatchers类似于事件代理,将需要触发的事件代理给一个总事件由该事件来触发被代理事件。
  2. 可以实现蓝图类与蓝图类之间的调用,关卡蓝图和蓝图类相互的调用等多方调用,是一个比较常用的功能。