【图解UE4源码】AI行为树系统 其二 一棵行为树是怎么被运行起来的

是这样的,想请分析下,【图解UE4源码】AI行为树系统 其二 一棵行为树是怎么被运行起来的
最新回答
纯家小可爱

2024-09-03 04:08:34

在本系列的第三部分,我们将深入探讨行为树的运行过程。首先,行为树的运行分为几个关键步骤:


发起行为树运行


行为树的运行可以通过两种方式启动:



  • 调用AAIController::RunBehaviorTree()函数。

  • 通过Run Behavior任务节点执行子行为树。


抽象逻辑理解


理解流程时,想象一个抽象流程图,我们将讲解分为蓝色泳道(检查和加载)和红色泳道(初始化和执行)。


检查和加载子树

开始前,UBehaviorTreeComponent会对子树进行三项检查:



  1. 确保子树使用的黑板资源与父树一致。

  2. 确保全局的UBehaviorTreeManager可用。

  3. 确认发起节点的父节点是否允许push新子树,如SimpleParallel节点限制。


树的加载

检查通过后,进入资源加载阶段,首先尝试从缓存获取数据,避免重复加载。


缓存和数据初始化

加载行为树资源,如果缓存中有匹配的模板,直接返回。否则,创建新模板并计算节点初始化信息,包括内存需求和执行顺序。


执行树的初始化

加载完成后,进一步在UBehaviorTreeComponent::PushInstance中初始化FBehaviorTreeInstance和FBehaviorTreeInstanceId,设置内存偏移,填充数组,然后将新实例入栈并标记为活跃。


行为树的执行


最后,执行新树,从根节点的service开始,然后执行根节点,进入下一轮迭代。后续的节点执行细节将作为下一部分内容。