Files
UnityAI/03_核心功能/Entity/通用技能系统使用指南.md
Shiliang 5e5b9f8c80 docs: 添加通用技能系统使用指南文档
- 创建通用技能系统使用指南
- 更新README.md,添加对新文档的引用
2026-06-02 10:30:55 +08:00

127 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 通用技能系统使用指南
## 概述
通用技能系统HFGenericSkillSystem是一个适用于角色和怪物的统一技能管理系统提供了一套标准化的技能操作接口。
## 架构设计
### 系统组成
- **HFGenericSkillSystem** - 通用技能系统(继承自 AbsHFSkillSystem<HFGenericSkillModel>
- **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<HFGenericSkillSystem>(); // 替代原来的 HFSkillSystem
```
### 敌人实体
`HFEntity_Enemy``HFEntity_Boss` 中,技能系统被自动添加:
```csharp
AddSystem<HFGenericSkillSystem>(); // 替代原来的 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<enHFCTCEvent>
{
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. 合理设置技能冷却时间以平衡游戏体验