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

144 lines
4.0 KiB
Markdown
Raw Permalink 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. 合理设置技能冷却时间以平衡游戏体验
---
## 文档关联
> 当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。
| 文档 | 关联原因 |
|---|---|
| [技能系统入口](README.md) | 本文件是技能系统模块的子文档 |
| [实体系统](../实体系统/README.md) | 技能系统是实体系统的子系统 |
| [事件系统](../事件系统/README.md) | 技能使用事件依赖事件系统 |
| [数据/配置框架](../数据配置框架.md) | 技能配置加载依赖配置框架 |
| [modules/模块索引.md](../../模块索引.md) | 模块索引是项目知识总入口 |
| [rules/10-架构说明.md](../../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 |
| [rules/30-模块登记规则.md](../../../rules/30-模块登记规则.md) | 模块登记规则定义分类和状态口径 |