数据驱动的技能体系
GAS 的资产一旦多(50 个技能、100 个 GE),组织方式就开始影响效率。
资产命名与目录规范
Content/Abilities/
Skills/ GA_*(技能 GA)
Effects/
Damage/ GE_Damage_*、GE_Heal_*
Buff/ GE_Buff_*
Debuff/ GE_Debuff_*
Cooldown/ GE_CD_*
Cost/ GE_Cost_*
Attributes/ AttributeSet(C++)
Tags/ (ini 登记,不放资产)
Data/ DA_*(技能配置数据)
命名约定(团队级):
- GA_Fireball —— 技能
- GE_Damage_Fireball —— 该技能的伤害 GE
- GE_CD_Fireball —— 该技能的冷却 GE
- GE_Cost_Mana —— 复用型花费 GE(通用蓝耗)
GE 复用是关键:多数技能的 Cost GE 可以共用 GE_Cost_Mana(参数 Set-By-Caller 传入具体蓝耗),不必每个技能一个。
从 DataTable 驱动技能数据
技能的"数值"(伤害、冷却、蓝耗)从 GA 里的蓝图像变量,迁移到 DataTable/DataAsset:
USTRUCT(BlueprintType)
struct FSkillData : public FTableRowBase
{
UPROPERTY(EditAnywhere) float Damage;
UPROPERTY(EditAnywhere) float Cooldown;
UPROPERTY(EditAnywhere) float ManaCost;
UPROPERTY(EditAnywhere) TSubclassOf<UGameplayEffect> DamageGE;
};
GA 激活时按行名查表,把数值 SetByCaller 到 GE 上。策划改表、程序动GA 结构才动代码——与第 1 本的"数据配置化"完全一致的思路。
一个"技能 = 配置 + GA + 几个 GE"的模板
| 文件 | 职责 |
|---|---|
DA_Skill_Fireball |
数值(伤害/冷却/蓝耗/引用) |
GA_Fireball |
流程(Task 编排、Commit、应用 GE) |
GE_Damage_Fireball(或复用通用伤害 GE + 参数) |
结算规则 |
GE_CD_Fireball |
冷却 |
| 蒙太奇 + Notify | 时机 |
新技能复制这套模板改数据,5~10 分钟一个。
本章小结
- 命名规范(GA_/GE_ 前缀 + 用途后缀)+ 目录规范是 GAS 项目可维护的地基。
- GE 能复用就复用(通用蓝耗 GE、通用冷却模板),Set-By-Caller 传差异。
- 数值走 DataTable/Set-By-Caller,策划与程序解耦。
