配置入口不集中
如果敌人身份、动作、AI 参数和 Boss 阶段分散在多个脚本里,新增敌人时很难知道应该改哪里。
案例研究 / system-design
我把 EnemyDefinitionData 里的基础信息、动作集合、单动作规则、行为档案、Boss 阶段和调试读取拆成可读配置链,让敌人...
项目阶段
原型
负责人
苏阿酥
协作团队
个人项目

我把 EnemyDefinitionData 里的基础信息、动作集合、单动作规则、行为档案、Boss 阶段和调试读取拆成可读配置链,让敌人差异来自明确配置,而不是散落在单个 AI 脚本里的临时判断。
系统定位
敌人定义、动作规则、行为参数与调试验收的配置链。
项目类型
Unity 2D 横版动作战斗样机。
关键实现
EnemyDefinitionData 装配基础面板、动作集合、单动作规则和行为档案。
用 EnemyDefinitionData 作为怪物配置入口,只挂接基础信息、动作集合和行为配置,避免继续把所有参数塞进一张 EnemyData 大表。
EnemyInfoConfigData 维护 enemyId、displayName、生命、防御、移动速度和冲刺速度等身份与面板信息,不混入索敌和攻击决策。
EnemyActionSetData 管理 defaultAction、actions 和 hitboxGizmo,让普通怪、精英怪和 Boss 变体能通过替换动作集合形成差异。
EnemyActionData 先写清前摇、活跃、恢复、释放距离、冷却和选择权重,让动作何时可选有稳定判断。
同一动作配置继续承载伤害、击退、碰撞盒、动画和命中反馈,让一次攻击的表现与结算能一起验收。
EnemyBehaviorProfileData 承接巡逻、索敌、追击、攻击决策、状态动画和受击反馈,决定敌人如何在运行中切换行为。
Boss 阶段复用同一套动作集合和行为档案,再追加阶段条件、行为切换和镜像压力,避免 Boss 成为孤立逻辑。
运行时由 EnemyDefinitionProvider 提供稳定读取入口,HUD 展示当前状态、动作、条件和切换原因,用于定位异常。
先把敌人的配置入口收束到 EnemyDefinitionData,再拆细字段职责,避免新增敌人时到处找脚本。
将动作窗口和命中反馈放进 EnemyActionData,将巡逻、索敌、追击和攻击选择放进行为档案,避免规则互相污染。
Boss 只在同一链路上增加阶段条件和压力变化,而不是另开 AI 逻辑,保证普通怪、精英怪和 Boss 可以共用调试口径。
形成 EnemyDefinitionData 装配说明,列明基础信息、动作集合、行为档案和 Boss 阶段如何挂接到同一敌人定义。
形成 EnemyInfoConfigData 字段说明,证明 enemyId、displayName、生命、防御、移动速度和冲刺速度只服务身份与面板。
形成动作集合与单动作规则清单,覆盖 defaultAction、actions、hitboxGizmo、窗口、距离、伤害、击退、动画、冷却和权重。
形成 EnemyBehaviorProfileData 行为参数说明,覆盖巡逻、索敌、追击、攻击决策、状态动画和受击反馈。
形成读取与 HUD 验收清单,用当前状态、当前动作、选择条件和切换原因证明异常行为可以回到配置链定位。

敌人模板
38个↑
当前项目文档观测到的敌人模板数量,说明配置拆分不是单个样例。

装配对象
4组↑
基础信息、动作集合、单动作规则、行为档案共同组成 EnemyDefinitionData 的主要承载。

基础字段
6项↑
enemyId、displayName、生命、防御、移动速度、冲刺速度。

动作验收项
10项↑
前摇、活跃、恢复、距离、伤害、击退、碰撞盒、动画、冷却、权重。

行为参数
6组↑
巡逻、索敌、追击、攻击决策、状态动画、受击反馈。

调试问题
3类↑
重点回答为什么攻击、为什么停手、为什么切阶段。
这页不能只说行为链路,还要把主定义、基础面板、动作集合、单动作和行为档案的真实配置讲出来。
字段细节可以展示,但必须说明它解决什么问题;否则就会退回字段表直贴,读者仍然看不懂设计判断。
后续调优 Boss 时继续复用动作集合和行为档案,只把阶段条件与压力节奏作为扩展层。