数据驱动的 AI 配置
AI 的"同结构不同数值"应该全部走数据表。这一节给出可落地的字段设计。
通用 AI 配置表
| 字段 | 类型 | 示例值 | 说明 |
|---|---|---|---|
| EnemyID | Name | EN_Grunt | 主键 |
| BehaviorTree / StateTree | 软引用 | BT_Grunt / ST_Grunt | 决策资产 |
| BlackboardAssets | 软引用 | BB_EnemyBase | 记忆配置 |
| PatrolSpeed | float | 120 | 巡逻速度 |
| ChaseSpeed | float | 400 | 追击速度 |
| SightRange | float | 25m | 视野半径 |
| AttackRange | float | 2m | 攻击距离 |
| AttackCooldown | float | 1.5s | 攻击冷却 |
| RetreatHP | float | 0.2 | 撤退血量 |
| Tags | 标签数组 | EnemyType.Melee | 类型标签 |
生成与初始化流程
1. 敌人生成:查配置表拿到行
2. 创建 AIController,挂决策资产与黑板
3. 把数值写入对应组件(感知配置、速度、攻击参数……)
4. Possess Pawn,决策开始
关键点:数值写入的是组件实例而非资产。感知配置里的视野半径是资产上的属性,改它会影响所有同类敌人。正确做法是每个 AI 实例自己的感知组件实例上覆盖配置。
数据驱动的收益
- 新增敌人类型 = 加表行 + 关联资产,零代码;
- 数值平衡由策划在表里调,不阻塞程序;
- 全局可搜索("哪些敌人视野超过 40m?"一条查询的事)。
与第 2 / 3 章的框架资产、第 1 章的三层结构合起来,就构成了一套可维护的 AI 体系:框架管"怎么想",数据管"想多狠"。
