# 通用技能系统使用指南 ## 概述 通用技能系统(HFGenericSkillSystem)是一个适用于角色和怪物的统一技能管理系统,提供了一套标准化的技能操作接口。 ## 架构设计 ### 系统组成 - **HFGenericSkillSystem** - 通用技能系统(继承自 AbsHFSkillSystem) - **HFGenericSkillModel** - 通用技能模型(继承自 HFAbsModel) - **HFEvent_OnSkillUsed** - 技能使用事件 ### 核心功能 #### 1. 技能管理 ```csharp // 添加技能 skillSystem.AddSkill(skillId); // 移除技能 skillSystem.RemoveSkill(skillId); // 检查技能是否就绪 bool isReady = skillSystem.IsSkillReady(skillId); // 获取技能冷却时间 float cooldown = skillSystem.GetSkillCooldown(skillId); ``` #### 2. 技能使用 ```csharp // 使用技能(指定目标) skillSystem.UseSkill(skillId, targetEntity); // 使用技能(指定位置) skillSystem.UseSkillAtPosition(skillId, worldPosition); ``` #### 3. 冷却管理 ```csharp // 检查是否有技能在冷却 bool hasCooldown = skillSystem.HasSkillInCooldown(); // 清除所有技能冷却 skillSystem.ClearAllCooldowns(); ``` ## 使用场景 ### 角色实体 在 `HFEntity_Role` 中,技能系统被自动添加: ```csharp AddSystem(); // 替代原来的 HFSkillSystem ``` ### 敌人实体 在 `HFEntity_Enemy` 和 `HFEntity_Boss` 中,技能系统被自动添加: ```csharp AddSystem(); // 替代原来的 HFSkillSystem ``` ## 技能配置 ### 技能配置结构 ```csharp public struct stSkillConfig { public int Id; // 技能ID public string Name; // 技能名称 public float Cooldown; // 冷却时间 public float Range; // 作用范围 public float Damage; // 伤害值 public string Description; // 描述 } ``` ### 技能加载 系统会根据实体配置自动加载对应的技能: ```csharp // 从EntityConfig表加载技能 var config = HFFunCatalogue.NDB.ds_EntityConfig_Sheet_TableData_1FC4334A.ReadTable(ownerEntity.EntityId); if (config != null && config.SkillID > 0) { AddSkill(config.SkillID); } ``` ## 事件系统 ### 技能使用事件 当技能被使用时,系统会触发 `HFEvent_OnSkillUsed` 事件: ```csharp public class HFEvent_OnSkillUsed : AbsHFEventArg { public HFAbsEntity Caster { get; set; } // 施法者 public int SkillId { get; set; } // 技能ID public HFAbsEntity Target { get; set; } // 目标 public Vector3 Position { get; set; } // 位置(可选) } ``` ## 扩展接口 ### Buff管理 ```csharp // 添加Buff skillSystem.AddBuff(buffTemplate); // 移除Buff skillSystem.RemoveBuff(buffId); ``` ## 最佳实践 1. **统一接口**:角色和怪物使用相同的技能系统接口 2. **自动配置**:技能配置根据实体类型自动加载 3. **冷却管理**:内置技能冷却机制 4. **事件驱动**:通过事件系统处理技能效果 5. **类型安全**:使用强类型的技能ID和配置 ## 注意事项 1. 技能释放器的具体实现需要根据游戏需求进行定制 2. 技能效果逻辑应在事件处理器中实现 3. 确保技能ID在项目中唯一 4. 合理设置技能冷却时间以平衡游戏体验