Behavior Designer 内置的事件系统,能够让行为树很容易地响应变化。

触发事件有两种方式:

  • 事件 task
  • 代码

    01 事件 task

    image.png
    上图中:

  • Send Event:发送事件

  • Has Received Event:接收事件

当 Send Event task 发送事件时,下个 tick 时,Has Received Event 收到事件,并触发 Log Value task 执行。

注意,上图中左边的 Sequence 被配置为 Low Priority 类型的条件中止,因此如果 Idle task 执行时间大于 1tick,右边的 Sequence 会在下个 tick 被条件中止。

02 代码

注册

  1. public void OnEnable()
  2. {
  3. var behaviorTree = GetComponent<BehaviorTree>();
  4. behaviorTree.RegisterEvent<object>("MyEvent", ReceivedEvent);
  5. }
  6. public void ReceivedEvent(object arg1)
  7. {
  8. }

发送

  1. var behaviorTree = GetComponent<BehaviorTree>();
  2. behaviorTree.SendEvent<object>("MyEvent", 5);

注销

  1. public void OnDisable()
  2. {
  3. var behaviorTree = GetComponent<BehaviorTree>();
  4. behaviorTree.UnregisterEvent<object>("MyEvent", ReceivedEvent);
  5. }