Behaviour Tree Service 中的几个函数
Service中可以override的函数有8个,因为每个函数都有个AI版本的,所以实际上是4组函数,AI版本的和非AI版本基本一样,
他们分别是:
Receive Search Start (AI)
Receive Activation (AI)
Receive Tick (AI)
Receive Deactivation (AI)
我们以下图为例:
这个分支是一个Sequence,会持续循环执行下方四个任务,直到条件不满足退出。
当执行到该分支时,会触发Service的Search Start AI 和 Activation AI.
当执行完一个循环(图中任务4执行完成,又回到任务1),进行第二次循环时,又会触发Activation AI,但不会触发Search Start AI,Search Start AI只有在离开这个分支,又重新进入这个分支时会再次触发。这是这两个事件的一个重要区别。
执行过程中,按照Behaviour Tree中指定的该服务的执行频率(例如上图中是0.2秒一次, tick every 0.20s),每执行一次Service会触发一次Receive Tick
Receive Deactivation则和Receive Activation 相对应,是没执行完一次循环后调用。
综合看下来,实际上缺少一个和Receive Search Start (AI)想对应的函数,即离开整个分支时执行的函数。也许是Epic认为没有必要吧,我在实践中也确实没有遇到这个需求。