在场景查询系统(EQS)中,生成器 用于产生将要测试和加权的位置或Actor(统称为 项目(Item)),权重最高的位置或Actor会返回到行为树。可以使用不同类型的生成器来检索信息,它们可以在蓝图中创建,也可以在C++中创建。
Actors of Class
Actors of Class 生成器在 搜索中心 周围特定的 搜索半径 内查找给定类的所有Actor。返回的Actor可以用作测试中的项目。
| 属性 | 描述 |
|---|---|
| 搜索的Actor类(Searched Actor Class) | 要查找的Actor类(例如Pawn、角色)。 |
| 仅在半径内生成Actor(Generate Only Actors in Radius) | 如果启用该属性,系统将只在 搜索半径 内返回特定 搜索的Actor类 的Actor。如果禁用该属性,将返回游戏世界场景中指定 搜索的Actor类 的所有Actor。可以选择将用户定义的 数据绑定 与此选项一起使用。 |
| 搜索半径(Search Radius) | 查找指定 搜索的Actor类 的最大距离。 零值和负值将不会返回任何结果。 |
| 搜索中心(Search Center) | 作为搜索中心的情境,例如从查询器或其他某些情境开始进行搜索。 |
| 选项名称 | 此属性继承自生成器ActorsOfClass的基类。它主要在显示此生成器的名称时(如HUD或输出消息)使用。 |
| 自动排序测试(Auto Sort Tests) | 如果启用该选项,运行查询前将自动对测试排序,以获得最佳性能。 |
Composite
设置EQS查询时,有时可能希望在一个测试用例中包含多个 生成器。通过 合成(Composite) 节点即可将多个 生成器 添加到一个数组,然后将该数组用于测试。
| 属性 | 描述 |
|---|---|
| 生成器(Generators) | 允许添加多个包含在测试中的生成器。 |
| 允许不同项目(Item)类型(Allow Different Item Types) | 允许对有不同项目(Item)类型的生成器执行测试。 生成器将对原始数据使用 强制项目(Item)类型(Forced Item Type),必须确保子生成器的内存布局正确,因为它们要通过自己的项目(Item)类型写入内存块。例如,当测试通过 强制项目(Item)类型(Forced Item Type) 读取项目(Item)位置/属性时,数据必须要能放进 强制项目(Item)类型(Forced Item Type) 分配的块中。 |
| 强制项目(Item)类型(Forced Item Type) | 要在测试中使用的项目(Item)类型。例如Actor、方向或点。 |
| 选项名称 | 此属性继承自生成器ActorsOfClass的基类。它主要在显示此生成器的名称时(如HUD或输出消息)使用。 |
| 自动排序测试(Auto Sort Tests) | 如果启用该选项,运行查询前将自动对测试排序,以获得最佳性能。 |
Current Location
Current Location 生成器可用于获取指定的 查询情境 的位置,以实现测试验证的目的。
| 属性 | 描述 |
|---|---|
| 查询情境(Query Context) | 要在测试中使用的情境及其当前位置。 |
| 选项名称 | 此属性继承自生成器ActorsOfClass的基类。它主要在显示此生成器的名称时(如HUD或输出消息)使用。 |
| 自动排序测试(Auto Sort Tests) | 如果启用该选项,运行查询前将自动对测试排序,以获得最佳性能。 |
自定义生成器
除引擎提供的生成器类型外,还可以创建类型为 EnvQueryGenerator_BlueprintBase 类的新蓝图来创建自己的自定义生成器。
在C++中开发的生成器执行速度通常快于通过蓝图开发的生成器。
创建自定义生成器后便可以在场景查询中使用它:
在自定义生成器内部有一个可以覆盖的函数,名为 Do Item Generation:
当覆盖此函数时,就会获得从场景查询中传入的情境位置的数组。
数组可能因情境而异。例如,数组可以只有一个条目,其中包含查询器的位置,或者是关卡中每个体力回复剂的位置。
由于函数只能返回一个值,Do Item Generation函数有两个可以传递回场景查询的数组:Add Generated Actor 和 Add Generated Vector。
Add Generated Actor节点将向Actor返回数组添加Actor。该节点也可以和 Add Generated Vector 节点(下文)配合使用,同时返回位置值。生成器根据从Environment Query节点设置的黑板键来确定实际传递回行为树的数值。
Points:Circle
Points:Circle 生成器从 Circle Center 进行放射性追踪,以项目(Item)形式返回在(生成圆的)半径边缘的命中。
| 属性 | 描述 |
|---|---|
| 圆半径(Circle Radius) | 将从 Circle Center 情境外延的圆的最大半径。 |
| 生成间隔(Spawn Between) | 在圆的外侧边缘上生成的项目(Item)的间隔(以厘米计)。 |
| 点数(Number Of Points) | 要在圆上生成的项目(Item)数量。 |
| 圆弧方向(Arc Direction) | 定义用于确定圆弧方向的模式。可以选择 两点(Two Points)(从一个情境位置到另一个情境位置的方向)或 旋转(Rotation)(使用情境的旋转作为方向)。 |
| 圆弧角(Arc Angle) | 定义圆弧的角度,按度数计。 |
| 圆心(Circle Center) | 用作圆心的情境。 |
| 生成圆时忽略所有情境Actor(Ignore Any Context Actors when Generating Circle) | 如果启用此属性,则在生成圆时忽略对情境Actor的追踪。 |
| 圆心Z偏移(Circle Center ZOffset) | 应用于情境的Z轴可选偏移。 |
| 追踪数据(Trace Data) | 与如何执行追踪相关的选项。
|
| 投影数据(Projection Data) | 是否应该将生成的项目(Item)投射到寻路网格体上(以及使用哪个寻路网格体数据集)。 |
| 选项名称 | 此属性继承自生成器ActorsOfClass的基类。它主要在显示此生成器的名称时(如HUD或输出消息)使用。 |
| 自动排序测试(Auto Sort Tests) | 如果启用该选项,运行查询前将自动对测试排序,以获得最佳性能。 |
Points:Cone
Points:Cone 从 中心Actor 放射出指定 锥体角度 的锥体追踪作为项目(Item)。
| 属性 | 描述 |
|---|---|
| 对齐的点距(Aligned Points Distance) | 同一角度上每个点之间的距离。 |
| 锥体角度(Cone Degrees) | 生成锥体的最大角度。 |
| 角度步幅(Angle Step) | 角度增大的步幅。角度步幅必须大于或等于一。数值越小,生成的项目(Item)越少。 |
| 射程(Range) | 从情境生成锥体的距离。 |
| 中心Actor(Center Actor) | 将会在其面对方向生成锥体的Actor。 |
| 包含情境位置(Include Context Location) | 生成项目(Item)时是否包含 中心Actor 位置。 此选项会跳过 MinAngledPointsDistance 参数。 |
| 投射数据(Projection Data) | 是否应该将产生的项目(Item)投射到寻路网格体上(以及使用哪个寻路网格体数据集)。 |
| 选项名称 | 此属性继承自生成器ActorsOfClass的基类。它主要在显示此生成器的名称时(如HUD或输出消息)使用。 |
| 自动排序测试(Auto Sort Tests) | 如果启用该选项,运行查询前将自动对测试排序,以获得最佳性能。 |
Points: Donut
Points:Donut 按照用户指定的 环数 产生从 中心 情境辐射出的基于形状的追踪。
| 属性 | 描述 |
|---|---|
| 内半径(Inner Radius) | 点和情境之间的最小距离。 |
| 外半径(Outer Radius) | 点和情境之间的最大距离。 |
| 环数(Number Of Rings) | 要生成的环数。 |
| 每环点数(Points Per Rig) | 每个环要生成的点数。 |
| 圆弧方向(Arc Direction) | 定义用于确定圆弧方向的模式。你可以选择 两点(Two Points)(从一个情境位置到另一个情境位置的方向)或 旋转(Rotation)(使用情境的旋转作为方向)。 |
| 圆弧角(Arc Angle) | 定义圆弧的角度,按度数计。 |
| 使用螺旋模式(Use Spiral Pattern) | 如果启用该选项,圆环将以螺旋模式旋转。如果禁用该选项,则所有环都是零旋转,看起来更像车轮的辐条。 |
| 中心(Center) | 要作为搜索中心的情境,例如从查询器或其他某些情境出发进行搜索。 |
| 投射数据(Projection Data) | 是否应该将产生的项目(Item)投射到寻路网格体上(以及使用哪个寻路网格体数据集)。 |
| 选项名称 | 此属性继承自生成器ActorsOfClass的基类。它主要在显示此生成器的名称时(如HUD或输出消息)使用。 |
| 自动排序测试(Auto Sort Tests) | 如果启用该选项,运行查询前将自动对测试排序,以获得最佳性能。 |
Points: Grid
Points:Grid 将在 Generate Around 下指定的查询器周围生成项目(Item)网格。
| 属性 | 描述 |
|---|---|
| 网格半大小(GridHalfSize) | 要生成的项目(Item)网格的高度和宽度。 |
| 间隔(Space Between) | 网格项目(Item)的间距。 |
| 生成围绕(Generate Around) | 用于围绕其生成网格的情境。 |
| 投射数据(Projection Data) | 是否应该将产生的项目(Item)投射到寻路网格体上(以及使用哪个寻路网格体数据集)。 这将把可能被墙壁围起或阻挡的项目(Item)移动回寻路网格体上,如果网格线恰好在寻路网格体边缘以外,这可能造成聚束。 |
| 选项名称 | 此属性继承自生成器ActorsOfClass的基类。它主要在显示此生成器的名称时(如HUD或输出消息)使用。 |
| 自动排序测试(Auto Sort Tests) | 如果启用该选项,运行查询前将自动对测试排序,以获得最佳性能。 |
Points: Pathing Grid
可以使用 Points:Pathing Grid 围绕给定的情境位置生成网格。
| 属性 | 描述 |
|---|---|
| 到项目(Item)的路径(Path to Item) | 寻路方向应该指向项目(Item)(启用)还是远离它(禁用)。 |
| 导航过滤器(Navigation Filter) | 要在寻路过程中使用的导航过滤器。 |
| 网格半大小(GridHalfSize) | 方块范围的一半(边缘距离)。 |
| 间隔(Space Between) | 定义网格上的点的生成密度。 |
| 生成围绕(Generate Around) | 用于围绕其生成网格的情境。 |
| 投射数据(Projection Data) | 是否应该将产生的项目(Item)投射到寻路网格体上(以及使用哪个寻路网格体数据集)。 这将把可能被墙壁围起或阻挡的项目(Item)移动回寻路网格体上,如果网格线恰好在寻路网格体边缘以外,这可能造成聚束。 |
| 选项名称 | 此属性继承自生成器ActorsOfClass的基类。它主要在显示此生成器的名称时(如HUD或输出消息)使用。 |
| 自动排序测试(Auto Sort Tests) | 如果启用该选项,运行查询前将自动对测试排序,以获得最佳性能。 |
| 扫描范围乘数(Scan Range Multiplier) | 点和情境之间的最大距离的乘数。 |