Files
UnityAI/modules/frameworks/技能系统/README.md

135 lines
3.1 KiB
Markdown
Raw Normal View History

# 技能系统
## 分类
- 核心框架
## 目的
为角色、怪物等实体提供统一的技能管理、冷却控制、释放接口和事件通知。
---
## 核心组成
| 类/结构 | 职责 |
|---------|------|
| `HFGenericSkillSystem` | 通用技能系统,继承 `AbsHFSkillSystem<HFGenericSkillModel>` |
| `HFGenericSkillModel` | 通用技能模型,继承 `HFAbsModel` |
| `HFEvent_OnSkillUsed` | 技能使用事件 |
| `stSkillConfig` | 技能配置结构 |
---
## 技能管理
```csharp
// 添加技能
skillSystem.AddSkill(skillId);
// 移除技能
skillSystem.RemoveSkill(skillId);
// 检查技能是否就绪
bool isReady = skillSystem.IsSkillReady(skillId);
// 获取技能冷却时间
float cooldown = skillSystem.GetSkillCooldown(skillId);
// 是否有技能在冷却
bool hasCooldown = skillSystem.HasSkillInCooldown();
// 清除所有冷却
skillSystem.ClearAllCooldowns();
```
---
## 技能使用
```csharp
// 对目标使用技能
skillSystem.UseSkill(skillId, targetEntity);
// 对位置使用技能
skillSystem.UseSkillAtPosition(skillId, worldPosition);
```
触发事件:
```csharp
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; }
}
```
---
## 自动配置加载
系统会根据实体配置自动加载技能:
```csharp
var config = HFFunCatalogue.NDB.ds_EntityConfig_Sheet_TableData_1FC4334A.ReadTable(ownerEntity.EntityId);
if (config != null && config.SkillID > 0)
{
AddSkill(config.SkillID);
}
```
---
## 实体中的添加方式
在角色或敌人实体中统一添加:
```csharp
AddSystem<HFGenericSkillSystem>();
```
---
## 子系统边界
从实体系统角度看,技能相关子目录通常包括:
- `Models/Skill` — 技能数据模型
- `Systems/Skill` — 技能系统逻辑
- `HFSkillTrigger_*` — 技能触发器
- `HFSkill_*_Releaser` — 技能释放器
---
## 使用规则
- 角色和怪物使用同一套技能系统接口。
- 技能 ID 在项目中应保持唯一。
- 技能效果逻辑应在事件处理器中实现,避免直接写在释放器里。
- 合理设置冷却时间以平衡游戏体验。
---
## 相关模块
- [实体系统](../实体系统/README.md)
- [事件系统](../事件系统/README.md)
- [数据/配置框架](../数据配置框架.md)
---
## 文档关联
> 当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。
| 文档 | 关联原因 |
|---|---|
| [modules/模块索引.md](../../模块索引.md) | 模块索引是项目知识总入口 |
| [modules/frameworks/实体系统/README.md](../实体系统/README.md) | 技能系统是实体系统的子系统 |
| [modules/frameworks/事件系统/README.md](../事件系统/README.md) | 技能使用事件依赖事件系统 |
| [rules/10-架构说明.md](../../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 |
| [rules/30-模块登记规则.md](../../../rules/30-模块登记规则.md) | 模块登记规则定义分类和状态口径 |