3.2 KiB
3.2 KiB
通用技能系统使用指南
概述
通用技能系统(HFGenericSkillSystem)是一个适用于角色和怪物的统一技能管理系统,提供了一套标准化的技能操作接口。
架构设计
系统组成
- HFGenericSkillSystem - 通用技能系统(继承自 AbsHFSkillSystem)
- 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_Enemy 和 HFEntity_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);
最佳实践
- 统一接口:角色和怪物使用相同的技能系统接口
- 自动配置:技能配置根据实体类型自动加载
- 冷却管理:内置技能冷却机制
- 事件驱动:通过事件系统处理技能效果
- 类型安全:使用强类型的技能ID和配置
注意事项
- 技能释放器的具体实现需要根据游戏需求进行定制
- 技能效果逻辑应在事件处理器中实现
- 确保技能ID在项目中唯一
- 合理设置技能冷却时间以平衡游戏体验