[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>
This commit is contained in:
143
modules/frameworks/技能系统/使用指南.md
Normal file
143
modules/frameworks/技能系统/使用指南.md
Normal file
@@ -0,0 +1,143 @@
|
||||
# 通用技能系统使用指南
|
||||
|
||||
## 概述
|
||||
|
||||
通用技能系统(`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) | 模块登记规则定义分类和状态口径 |
|
||||
Reference in New Issue
Block a user