当AI需要“看见”世界:从一次翻车案例说起
去年我参与了一个UE5战术射击项目,AI敌人需要快速找到掩体、包抄路线和射击点位。最初我们用纯蓝图+射线检测硬编码,结果AI要么卡在墙角反复横跳,要么集体冲进同一个掩体叠罗汉。后来换用行为树服务配合EQS,问题迎刃而解——但新的纠结来了:EQS的三种生成器(Generator)到底怎么选? 用Actors of Class?还是Composite?还是自定义Generator?网上教程要么只讲单个用法,要么含糊其辞说“看情况”。今天,我就以评测博主的身份,把这三个方案拉出来同台竞技,用数据说话,告诉你什么场景该翻谁的牌子。

方案A:Actors of Class——简单粗暴的“点名器”
原理与用法
Actors of Class是EQS最基础的生成器,它直接扫描世界中所有指定类的Actor,并把它们作为查询项(Item)输出。比如你要找场景里所有的“掩体点”,就指定BP_CoverPoint类,EQS会遍历所有该类的实例。底层上,它调用的是UWorld::GetAllActorsOfClass,复杂度O(N),N为场景中该类Actor总数。听起来很直接,但坑在于:它不做任何空间过滤,哪怕掩体在2000米外也会被纳入测试,白白浪费后续测试项的CPU。
适用场景
如果你的关卡里掩体点数量很少(<50),且分布集中,用Actors of Class没问题,蓝图一行搞定。但一旦数量过百,或者动态生成/销毁频繁,它的性能就会直线下降——每次查询都要重新遍历所有Actor,没有缓存机制。
方案B:Composite——分而治之的“调度员”
原理与用法
Composite生成器本身不产生Item,而是把多个子生成器的结果合并(并集或交集)。比如你可以用一个Sphere生成器在AI周围20米内生成一圈点,再用一个Donut生成器在20-40米内生成环形点,最后用Composite合并,得到远近两层候选点。它的核心价值是空间分层与逻辑组合。底层实现上,Composite会依次执行每个子生成器,然后将结果去重、合并。复杂度取决于子生成器的总和,但通常比纯Actors of Class更可控,因为你可以用Grid或Volume生成器先做空间裁剪。
适用场景
需要多区域、多类型候选点的复杂决策,比如同时考虑“附近掩体”和“远处高地”,或者动态生成的巡逻路径点混合固定点位。缺点是配置略繁琐,且如果子生成器过多,合并阶段会有额外开销。
技巧:Composite的“并集”模式容易导致Item数量爆炸,更合适配合测试项中的距离过滤(Distance Test)提前剔除无效点,减轻后续测试负担。

方案C:自定义Generator——终极灵活的“造物主”
原理与用法
当内置生成器无法满足需求时,你可以继承UEnvQueryGenerator写C++或蓝图。比如你需要基于导航网格的“战术点”生成器,沿着NavMesh边缘生成点,或者根据玩家位置动态计算扇形区域。自定义生成器拥有完全控制权:你可以访问世界子系统、读取游戏状态、甚至调用异步任务。底层上,它就是一个GenerateItems虚函数的重写,你可以在其中以任意算法填充FEnvQueryResult。
适用场景
高阶AI需求:比如MOBA游戏里根据兵线生成Gank路线,或者开放世界根据地形坡度生成伏击点。它的代价是开发成本高,调试麻烦。但一旦写好,性能往往最优,因为你可以精准控制生成逻辑,避免无谓遍历。
三大方案横向对比
| 对比维度 | Actors of Class | Composite | 自定义Generator |
|---|---|---|---|
| 上手难度 | ★☆☆☆☆ | ★★★☆☆ | ★★★★★ |
| 性能表现 | 差(O(N)遍历) | 中(依赖子生成器) | 优(可定制算法) |
| 灵活性 | 低(仅类过滤) | 中(空间组合) | 极高(任意逻辑) |
| 动态适应性 | 差(无缓存) | 中(可动态调整子生成器) | 优(实时计算) |
| 典型用例 | 固定掩体点、资源点 | 多层巡逻路径、混合区域 | 战术地图生成、动态避难点 |
| 调试便利性 | 高(可视化直观) | 中(需逐层检查) | 低(需日志/断点) |
选型建议:别拿锤子找钉子
经过多个项目的踩坑,我的选型原则很简单:能用内置就别写自定义,能空间过滤就别全图遍历。具体来说:
- 小型关卡、静态点位:直接用Actors of Class,搭配Distance Test和Trace Test,简单高效。
- 中型场景、多区域决策:Composite+Grid/Sphere生成器,先用空间范围砍掉90%无效点,再交给测试项评分。
- 大型开放世界、动态战术:自定义Generator,结合导航网格和游戏状态,实现真正的“智能”选择。
另外,别忘了EQS的测试项(Test)才是评分核心,生成器只负责提供候选。很多时候,优化测试项(比如用Scoring Factor代替布尔过滤)比换生成器更有效。

行业案例:从翻车到真香
回到开头那个战术射击项目,我们最终方案是:Composite合并Sphere生成器(近处)和自定义NavMesh边缘生成器(远处),再配合Distance、Trace、Visibility三个测试项加权评分,AI的掩体选择瞬间合理,而且帧率稳定在120fps(之前纯Actors of Class方案在200个掩体点时掉到70fps)。这告诉我们,EQS不是银弹,但选对生成器组合,就能让AI从“人工智障”变成“战术大师”。
如果你也想系统掌握UE5 AI决策与EQS实战,火星人教育为你准备了从蓝图到C++的完整进阶路径。作为创办24年、专注数字艺术与AIGC实战职业技能培训的机构,火星人教育开设了UE5游戏特效、AIGC视觉设计、AI漫剧创作、室内全屋定制、MAYA三维动画、C4D动态设计、工业设计、NUKE影视后期、摄影摄像实训等课程,北京、深圳双校区线下面授,面向美术生、在校大学生及转行职场人群,以项目化实训教学,夯实专业技能,助力就业与职业提升。咨询电话:010-65918670。








评论(0)