Files
UnityAI/modules/frameworks/技能系统
lms ee1ff7f444 [docs][refactor]: 将旧 01~06 中文教程合并整理为 modules/frameworks 文件夹结构
- 删除 01~05 旧中文教程目录
- 将 03 核心功能教程拆分为各 framework 模块的子文档
- 06 工具脚本移入 modules/frameworks/编辑器工具/UI工具/
- 非框架内容合并进 rules/20-开发规则.md 与 rules/40-工作流清单.md
- 更新所有交叉链接与文档关联表

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 18:36:15 +08:00
..

技能系统

分类

  • 核心框架

目的

为角色、怪物等实体提供统一的技能管理、冷却控制、释放接口和事件通知。


核心组成

类/结构 职责
HFGenericSkillSystem 通用技能系统,继承 AbsHFSkillSystem<HFGenericSkillModel>
HFGenericSkillModel 通用技能模型,继承 HFAbsModel
HFEvent_OnSkillUsed 技能使用事件
stSkillConfig 技能配置结构

技能管理

// 添加技能
skillSystem.AddSkill(skillId);

// 移除技能
skillSystem.RemoveSkill(skillId);

// 检查技能是否就绪
bool isReady = skillSystem.IsSkillReady(skillId);

// 获取技能冷却时间
float cooldown = skillSystem.GetSkillCooldown(skillId);

// 是否有技能在冷却
bool hasCooldown = skillSystem.HasSkillInCooldown();

// 清除所有冷却
skillSystem.ClearAllCooldowns();

技能使用

// 对目标使用技能
skillSystem.UseSkill(skillId, targetEntity);

// 对位置使用技能
skillSystem.UseSkillAtPosition(skillId, worldPosition);

触发事件:

public class HFEvent_OnSkillUsed : AbsHFEventArg<enHFCTCEvent>
{
    public HFAbsEntity Caster { get; set; }
    public int SkillId { get; set; }
    public HFAbsEntity Target { get; set; }
    public Vector3 Position { get; set; }
}

自动配置加载

系统会根据实体配置自动加载技能:

var config = HFFunCatalogue.NDB.ds_EntityConfig_Sheet_TableData_1FC4334A.ReadTable(ownerEntity.EntityId);
if (config != null && config.SkillID > 0)
{
    AddSkill(config.SkillID);
}

实体中的添加方式

在角色或敌人实体中统一添加:

AddSystem<HFGenericSkillSystem>();

子系统边界

从实体系统角度看,技能相关子目录通常包括:

  • Models/Skill — 技能数据模型
  • Systems/Skill — 技能系统逻辑
  • HFSkillTrigger_* — 技能触发器
  • HFSkill_*_Releaser — 技能释放器

使用规则

  • 角色和怪物使用同一套技能系统接口。
  • 技能 ID 在项目中应保持唯一。
  • 技能效果逻辑应在事件处理器中实现,避免直接写在释放器里。
  • 合理设置冷却时间以平衡游戏体验。

相关模块


文档关联

当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。

文档 关联原因
modules/模块索引.md 模块索引是项目知识总入口
modules/frameworks/实体系统/README.md 技能系统是实体系统的子系统
modules/frameworks/事件系统/README.md 技能使用事件依赖事件系统
rules/10-架构说明.md 架构说明定义总体分层和依赖方向
rules/30-模块登记规则.md 模块登记规则定义分类和状态口径