Files
UnityAI/modules/frameworks/技能系统/使用指南.md
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

4.0 KiB
Raw Blame History

通用技能系统使用指南

概述

通用技能系统(HFGenericSkillSystem)是一个适用于角色和怪物的统一技能管理系统,提供了一套标准化的技能操作接口。

架构设计

系统组成

  • HFGenericSkillSystem - 通用技能系统(继承自 AbsHFSkillSystem<HFGenericSkillModel>
  • HFGenericSkillModel - 通用技能模型(继承自 HFAbsModel
  • HFEvent_OnSkillUsed - 技能使用事件

核心功能

1. 技能管理

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

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

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

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

2. 技能使用

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

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

3. 冷却管理

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

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

使用场景

角色实体

HFEntity_Role 中,技能系统被自动添加:

AddSystem<HFGenericSkillSystem>();  // 替代原来的 HFSkillSystem

敌人实体

HFEntity_EnemyHFEntity_Boss 中,技能系统被自动添加:

AddSystem<HFGenericSkillSystem>();  // 替代原来的 HFSkillSystem

技能配置

技能配置结构

public struct stSkillConfig
{
    public int Id;           // 技能ID
    public string Name;      // 技能名称
    public float Cooldown;   // 冷却时间
    public float Range;      // 作用范围
    public float Damage;     // 伤害值
    public string Description; // 描述
}

技能加载

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

// 从 EntityConfig 表加载技能
var config = HFFunCatalogue.NDB.ds_EntityConfig_Sheet_TableData_1FC4334A.ReadTable(ownerEntity.EntityId);
if (config != null && config.SkillID > 0)
{
    AddSkill(config.SkillID);
}

事件系统

技能使用事件

当技能被使用时,系统会触发 HFEvent_OnSkillUsed 事件:

public class HFEvent_OnSkillUsed : AbsHFEventArg<enHFCTCEvent>
{
    public HFAbsEntity Caster { get; set; }    // 施法者
    public int SkillId { get; set; }           // 技能ID
    public HFAbsEntity Target { get; set; }    // 目标
    public Vector3 Position { get; set; }      // 位置(可选)
}

扩展接口

Buff 管理

// 添加 Buff
skillSystem.AddBuff(buffTemplate);

// 移除 Buff
skillSystem.RemoveBuff(buffId);

最佳实践

  1. 统一接口:角色和怪物使用相同的技能系统接口
  2. 自动配置:技能配置根据实体类型自动加载
  3. 冷却管理:内置技能冷却机制
  4. 事件驱动:通过事件系统处理技能效果
  5. 类型安全使用强类型的技能ID和配置

注意事项

  1. 技能释放器的具体实现需要根据游戏需求进行定制
  2. 技能效果逻辑应在事件处理器中实现
  3. 确保技能 ID 在项目中唯一
  4. 合理设置技能冷却时间以平衡游戏体验

文档关联

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

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