数据驱动的技能体系

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,策划与程序解耦。