diff --git a/modules/frameworks/内存对象管理/README.md b/modules/frameworks/内存对象管理/README.md index 143fdda..251503d 100644 --- a/modules/frameworks/内存对象管理/README.md +++ b/modules/frameworks/内存对象管理/README.md @@ -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`。 - -```text -GetClassEntity() - -> 优先从 Stack 弹出复用 - -> 否则 Activator.CreateInstance() -``` - -### HFSimulateBehaviourPool - -行为对象池,用于继承 `AbsHFSimulateBehaviour` 的对象。 - -- 维护未使用队列和使用中列表。 -- `GiveBack()` 隐藏 GameObject 并调用 `Recycle()`。 - -### HFScriptMemPool - -脚本对象池,用于 `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` | 行为对象池,用于继承 `AbsHFSimulateBehaviour` 的对象 | +| `HFScriptMemPool` | 脚本对象池,支持普通类与 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) | 架构说明定义总体分层和依赖方向 | diff --git a/modules/frameworks/技能系统/README.md b/modules/frameworks/技能系统/README.md index 6e9b0dd..ba00466 100644 --- a/modules/frameworks/技能系统/README.md +++ b/modules/frameworks/技能系统/README.md @@ -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 -{ - 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(); -``` - ---- +- 角色和怪物使用同一套技能系统接口。 +- 技能 ID 在项目中应保持唯一。 +- 技能效果逻辑应在事件处理器中实现,避免直接写在释放器里。 +- 合理设置冷却时间以平衡游戏体验。 ## 子系统边界 @@ -102,24 +33,12 @@ AddSystem(); - `HFSkillTrigger_*` — 技能触发器 - `HFSkill_*_Releaser` — 技能释放器 ---- +## 详细文档 -## 使用规则 - -- 角色和怪物使用同一套技能系统接口。 -- 技能 ID 在项目中应保持唯一。 -- 技能效果逻辑应在事件处理器中实现,避免直接写在释放器里。 -- 合理设置冷却时间以平衡游戏体验。 - ---- - -## 相关模块 - -- [实体系统](../实体系统/README.md) -- [事件系统](../事件系统/README.md) -- [数据/配置框架](../数据配置框架.md) - ---- +- [使用指南](使用指南.md) — API 详情、配置加载、事件结构与最佳实践 +- [实体系统](../实体系统/README.md) — 技能系统作为实体子系统的添加方式 +- [事件系统](../事件系统/README.md) — 技能使用事件依赖事件系统 +- [数据/配置框架](../数据配置框架.md) — 技能配置来源 ## 文档关联 @@ -128,7 +47,9 @@ AddSystem(); | 文档 | 关联原因 | |---|---| | [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) | 模块登记规则定义分类和状态口径 | diff --git a/modules/frameworks/相机系统/README.md b/modules/frameworks/相机系统/README.md index 25a803b..f21bc53 100644 --- a/modules/frameworks/相机系统/README.md +++ b/modules/frameworks/相机系统/README.md @@ -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(); - cameraMgr.AddCamera(uiCamera); - - Camera mainCam = cameraMgr.mainCamera.MainCamera; - } - - void OnDestroy() - { - UIOverlayCamera uiCamera = GetComponent(); - 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) | 模块登记规则定义分类和状态口径 | diff --git a/rules/10-架构说明.md b/rules/10-架构说明.md index 24b38ff..b5eb916 100644 --- a/rules/10-架构说明.md +++ b/rules/10-架构说明.md @@ -64,4 +64,5 @@ AI 每次都应读取目标项目的 `ProjectSettings/ProjectVersion.txt`,不 | [开发规则](20-开发规则.md) | 源码边界对应具体修改规则 | | [工作流清单](40-工作流清单.md) | 生成和验证步骤引用本架构 | | [模块索引](../modules/模块索引.md) | 模块职责和入口 | -| [通用框架](../modules/frameworks/通用框架/框架架构.md) | StrayFog 实现视角的架构说明 | +| [通用框架](../modules/frameworks/通用框架/README.md) | General / Core 通用能力说明 | +| [框架架构](../modules/frameworks/框架架构.md) | StrayFog 实现视角的架构说明 |