AI的行动主要逻辑位于BehaviorTree内,AI的主要行动实现主要位于AIController中,而AI的记忆主要位于Blackboard内。下面是一些基本概念:
1.BehaviorTree内部含有一个成员是Blackboard。所以我们一般只给一个AICharacter内部设置一个成员BehaviorTree就行了,而在Editor内把Blackboard指认给BehaviorTree。
2.Editor内的Blackboard实际上是一个UBlackboardData,而不是一个Component,BehaviorTree内部的Blackboard成员是UBlackboardData。Component用于AIController内,在AIController我们会声明一个UBlackboardComponent,而在Editor里边创建的是一个UBlackboardData,是不一样的数据结构,UBlackboardComponent的初始化函数InitializeBlackboard接受一个参数是UBlackboardData。
3.UBlackboardData是初始化UBlackboardComponent的参数数据,而我们之后的操作主要在UBlackboardComponent上完成。比如UBlackboardComponent的函数SetValueAsVector就是给Blackboard上的一个Vector参数赋值。
4.BehaviorTree和Blackboard比较类似,也是有一个UBehaviorTree类型和一个UBehaviorTreeComponent类型,主要操作位于UBehaviorTreeComponent上,UBehaviorTree内只是数据。比如UBehaviorTreeComponent的一个函数是StartTree,而参数是UBehaviorTree。
5.可见Component一般实现逻辑,而需要用到的数