[docs][refactor]: 拆分重复模块文档并提升框架架构为全局入口

- 技能系统/相机系统/内存对象管理 README 改为概览+导航
- 框架架构.md 由通用框架子目录提升为全局入口
- 更新日期、过时改进点和文档关联路径
- 10-架构说明.md 拆分通用框架与框架架构链接

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
lms
2026-07-15 14:39:16 +08:00
parent fc23b75e95
commit 45046d8d96
4 changed files with 33 additions and 240 deletions

View File

@@ -8,8 +8,6 @@
提供类实例池、行为对象池、脚本对象池、实体池和 RT 展示对象的统一复用机制,减少 GC 和实例化开销。
---
## 核心路径
- 内存管理:`Assets/Game/GameHFScripte/CopyToHF/MemoryManager/`
@@ -17,59 +15,15 @@
- 调用池:`Assets/Game/GameHFScripte/GameFunction/Logic/CallPoolManager/`
- 实体池:`Assets/Game/GameHFScripte/GameFunction/GameEntity/EntityPool/`
---
## 池类型概览
## 池类型
### HFClassEntityManager
类实例池,按类型 hash 维护 `Stack<object>`
```text
GetClassEntity<T>()
-> 优先从 Stack 弹出复用
-> 否则 Activator.CreateInstance<T>()
```
### HFSimulateBehaviourPool<T>
行为对象池,用于继承 `AbsHFSimulateBehaviour` 的对象。
- 维护未使用队列和使用中列表。
- `GiveBack()` 隐藏 GameObject 并调用 `Recycle()`
### HFScriptMemPool<T>
脚本对象池,用于 `IHFRecycle` 的普通对象或 MonoBehaviour。
- 若类型继承 MonoBehaviour自动创建 GameObject 挂载组件。
- 若类型为普通类,直接 `Activator.CreateInstance`
### 实体池
`HFEntityPool` + 各类 `AbsHFEntityPool` 实现,见 [实体系统](../实体系统/README.md)。
---
## 运行时展示对象RT
RT 对象用于在独立相机上展示模型、特效等:
- `RTObject`:运行时展示对象基类
- `RTGameObjectRes`:从资源 id 创建展示对象
- `RTEntity`:实体展示对象
- `RTCameraItem`RT 相机项
- `RTUIEffectCameraItem`UI 特效相机项
创建流程:
```text
RTGameObjectRes
-> 从资源 id 创建 GameObject
-> 资源加载走 HFABMgr.Instance.LoadAsset
```
---
| 池 | 用途 |
|---|---|
| `HFClassEntityManager` | 类实例池,按类型维护复用栈 |
| `HFSimulateBehaviourPool<T>` | 行为对象池,用于继承 `AbsHFSimulateBehaviour` 的对象 |
| `HFScriptMemPool<T>` | 脚本对象池,支持普通类与 MonoBehaviour |
| `HFEntityPool` | 实体池,见 [实体系统](../实体系统/README.md) |
| RT 展示对象 | 在独立相机展示模型/特效,资源加载走 `HFABMgr` |
## 回收接口
@@ -79,8 +33,6 @@ RTGameObjectRes
| `IHFRecycleEventHandler` | 回收事件处理 |
| `OnAfterRecycleHandler` | 回收到类实例池 |
---
## 使用规则
- 频繁创建/销毁的对象优先使用对象池。
@@ -88,14 +40,11 @@ RTGameObjectRes
- 对象池内对象在归还后应重置状态。
- RT 对象注意及时释放相机 seat 和资源引用。
---
## 详细文档
## 相关模块
- [实体系统](../实体系统/README.md)
- [资源管理](../资源管理/README.md)
---
- [使用指南](使用指南.md) — GameObject 池、脚本池、设计特点、性能建议与示例
- [实体系统](../实体系统/README.md) — 实体池特化
- [资源管理](../资源管理/README.md) — RT 对象资源加载
## 文档关联
@@ -104,6 +53,7 @@ RTGameObjectRes
| 文档 | 关联原因 |
|---|---|
| [modules/模块索引.md](../../模块索引.md) | 模块索引是项目知识总入口 |
| [modules/frameworks/内存对象管理/使用指南.md](使用指南.md) | 本模块的详细 API 与使用说明 |
| [modules/frameworks/实体系统/README.md](../实体系统/README.md) | 实体池是对象池的一种特化 |
| [modules/frameworks/资源管理/README.md](../资源管理/README.md) | RT 对象资源加载依赖资源管理 |
| [rules/10-架构说明.md](../../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 |

View File

@@ -8,8 +8,6 @@
为角色、怪物等实体提供统一的技能管理、冷却控制、释放接口和事件通知。
---
## 核心组成
| 类/结构 | 职责 |
@@ -19,79 +17,12 @@
| `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>();
```
---
- 角色和怪物使用同一套技能系统接口。
- 技能 ID 在项目中应保持唯一。
- 技能效果逻辑应在事件处理器中实现,避免直接写在释放器里。
- 合理设置冷却时间以平衡游戏体验。
## 子系统边界
@@ -102,24 +33,12 @@ AddSystem<HFGenericSkillSystem>();
- `HFSkillTrigger_*` — 技能触发器
- `HFSkill_*_Releaser` — 技能释放器
---
## 详细文档
## 使用规则
- 角色和怪物使用同一套技能系统接口。
- 技能 ID 在项目中应保持唯一。
- 技能效果逻辑应在事件处理器中实现,避免直接写在释放器里。
- 合理设置冷却时间以平衡游戏体验。
---
## 相关模块
- [实体系统](../实体系统/README.md)
- [事件系统](../事件系统/README.md)
- [数据/配置框架](../数据配置框架.md)
---
- [使用指南](使用指南.md) — API 详情、配置加载、事件结构与最佳实践
- [实体系统](../实体系统/README.md) — 技能系统作为实体子系统的添加方式
- [事件系统](../事件系统/README.md) — 技能使用事件依赖事件系统
- [数据/配置框架](../数据配置框架.md) — 技能配置来源
## 文档关联
@@ -128,7 +47,9 @@ AddSystem<HFGenericSkillSystem>();
| 文档 | 关联原因 |
|---|---|
| [modules/模块索引.md](../../模块索引.md) | 模块索引是项目知识总入口 |
| [modules/frameworks/技能系统/使用指南.md](使用指南.md) | 本模块的详细 API 与使用说明 |
| [modules/frameworks/实体系统/README.md](../实体系统/README.md) | 技能系统是实体系统的子系统 |
| [modules/frameworks/事件系统/README.md](../事件系统/README.md) | 技能使用事件依赖事件系统 |
| [modules/frameworks/数据配置框架.md](../数据配置框架.md) | 技能配置来源 |
| [rules/10-架构说明.md](../../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 |
| [rules/30-模块登记规则.md](../../../rules/30-模块登记规则.md) | 模块登记规则定义分类和状态口径 |

View File

@@ -8,8 +8,6 @@
管理多相机注册、相机堆栈排序、渲染顺序控制,为 UI、场景、特效等提供分层渲染能力。
---
## 核心类
| 类 | 职责 |
@@ -18,82 +16,6 @@
| `HFMainCamera` | 主相机,管理 CameraStack |
| `AbsHFCameraItem` | 相机项抽象基类,子类实现具体相机逻辑 |
---
## 创建自定义相机
继承 `AbsHFCameraItem`,实现 `CameraItem``Weight` 属性:
```csharp
public class UIOverlayCamera : AbsHFCameraItem
{
[SerializeField] private Camera uiCamera;
[SerializeField] private int weight = 10;
public override Camera CameraItem => uiCamera;
public override int Weight => weight;
protected override void OnInitialize()
{
base.OnInitialize();
uiCamera.clearFlags = CameraClearFlags.Depth;
uiCamera.depth = 100;
}
}
```
---
## 相机堆栈架构
```text
HFMainCamera (主相机)
├── CameraStack (相机堆栈)
│ ├── CameraItem1 (Weight=10)
│ ├── CameraItem2 (Weight=20)
│ └── CameraItem3 (Weight=5)
└── 按 Weight 排序 → 渲染顺序控制
```
---
## 管理相机
```csharp
public class CameraController : MonoBehaviour
{
void Start()
{
HFCameraManager cameraMgr = HFCameraManager.Instance;
UIOverlayCamera uiCamera = GetComponent<UIOverlayCamera>();
cameraMgr.AddCamera(uiCamera);
Camera mainCam = cameraMgr.mainCamera.MainCamera;
}
void OnDestroy()
{
UIOverlayCamera uiCamera = GetComponent<UIOverlayCamera>();
HFCameraManager.Instance.RemoveCamera(uiCamera);
}
}
```
---
## 常用 API
| 方法 | 说明 |
|-----|------|
| `AddCamera(AbsHFCameraItem)` | 添加相机到堆栈 |
| `RemoveCamera(AbsHFCameraItem)` | 从堆栈移除相机 |
| `GetCamera(string cameraName)` | 获取指定名称相机 |
---
## 使用规则
- 相机项必须继承 `AbsHFCameraItem`
@@ -101,14 +23,11 @@ public class CameraController : MonoBehaviour
- 添加和移除相机需成对出现,避免残留。
- UI 相机通常使用 `CameraClearFlags.Depth` 和较高 depth。
---
## 详细文档
## 相关模块
- [UI 窗口系统](../UI窗口系统/README.md)
- [资源管理](../资源管理/README.md)
---
- [使用指南](使用指南.md) — 自定义相机、堆栈管理、API 详情与示例
- [UI 窗口系统](../UI窗口系统/README.md) — UI 与相机的协作
- [资源管理](../资源管理/README.md) — 相机资源加载
## 文档关联
@@ -117,6 +36,8 @@ public class CameraController : MonoBehaviour
| 文档 | 关联原因 |
|---|---|
| [modules/模块索引.md](../../模块索引.md) | 模块索引是项目知识总入口 |
| [modules/frameworks/相机系统/使用指南.md](使用指南.md) | 本模块的详细 API 与使用说明 |
| [modules/frameworks/UI窗口系统/README.md](../UI窗口系统/README.md) | UI 窗口系统常与相机系统协作 |
| [modules/frameworks/资源管理/README.md](../资源管理/README.md) | 相机资源加载依赖资源管理 |
| [rules/10-架构说明.md](../../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 |
| [rules/30-模块登记规则.md](../../../rules/30-模块登记规则.md) | 模块登记规则定义分类和状态口径 |