基础应用就不说了,直接看官方文档。
这篇主要讲怎么在C++层定义Generator、Test和Context。
决策对象
EQS的作用是做出最优决策,目前支持的决策对象包括:
- Actor
- Point
- Direction
Generator
按照上面所说,生成器可以生成可选的集合。
对于一个自定义C++ Generator来说,最起码需要实现两个函数:
- 构造函数
- 标明集合的类型(Actor, Point, Direction…)
GenerateItems()
往集合里添加元素QueryInstance.AddItemData<UEnvQueryItemType_Actor>(Element);
添加点元素QueryInstance.AddItemData<UEnvQueryItemType_Point>(Element);
添加Actor元素
下面以一个例子说明,这个例子会生成一个敌人的集合。
UEnvQueryGenerator_Enemy::UEnvQueryGenerator_Teammate(const FObjectInitializer& ObjectInitializer /*= FObjectInitializer::Get()*/)
{
ItemType = UEnvQueryItemType_Actor::StaticClass();
}
void UEnvQueryGenerator_Enemy::GenerateItems(FEnvQueryInstance& QueryInstance) const
{
TWeakObjectPtr<UObject> OwnerPtr = QueryInstance.Owner;
UObject* Owner = OwnerPtr.Get();
MyCharactor* MyChar = Cast<MyCharactor>(Owner);
i