Files
UnityAI/modules/frameworks/实体系统/README.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

139 lines
3.5 KiB
Markdown

# 实体系统
## 分类
- 核心框架
## 目的
管理游戏实体的创建、生命周期、System-Model 架构、实体池和子系统协作。
---
## 核心路径
- 实体框架:`Assets/Game/GameHFScripte/GameFunction/GameEntity/`
- 实体数据:`Assets/Game/GameHFScripte/GameFunction/Logic/EntityData/`
- 子目录:`Core/``Entity/``EntityPool/``RVO/``StateMachineBehaviour/`
---
## 核心类
| 类 | 职责 |
|---|---|
| `HFAbsEntity` | 实体基类,继承 `AbsHFSimulateBehaviour` |
| `HFEntity_Basic` | 基础实体标签 |
| `HFEntity_Enemy` | 敌人类型标签 |
| `HFEntity_Human` | 人类/玩家类型标签 |
| `HFEntityPool` | 实体池入口 |
| `HFBasicPool` / `HFEnemyPool` / `HFHumanityPool` | 按 `enEntityLayer` 分类的实体池实现 |
| `AbsHFEntityPool` | 实体池抽象基类 |
| `stEntityInfo` | 实体数据结构 |
---
## System-Model 架构
`HFAbsEntity` 内部维护两个集合:
```text
m_Models : IModel[] // 数据层
m_Systems : ISystem[] // 表现层/逻辑层
```
`enSystemType` 关联 `IModel``ISystem`
添加系统:
```csharp
AddSystem<T>()
-> HFClassEntityManager.Instance.GetClassEntity<T>() // 创建或复用系统对象
-> IModel
-> model.Init(this, system.Init) // 建立实体、模型、系统关系
```
更新顺序:
```text
OnSystemUpdate() // 表现层更新
OnModelUpdate() // 数据层更新
```
---
## 实体池机制
`HFEntityPool``enEntityLayer` 注册不同的 `AbsHFEntityPool` 实现。
创建实体:
```text
AbsHFEntityPool.OnCreateEnity<T>()
-> 创建 GameObject 根节点
-> 维护 onlyid -> entity 索引
-> 维护 EntityId -> onlyid 索引
```
查询实体:
```text
HFEntityPool.SelectByOnlyid(onlyid)
-> 通过 onlyid -> enEntityLayer 找到对应池
-> 从具体池取实体
```
回收实体:
```text
DelEntityByOnlyid(onlyid)
-> 从池索引移除
-> 调用 entity.Recycle()
```
---
## 子系统
实体相关的子系统通常位于:
- `Models/AI``Systems/AI` — AI
- `Models/Animation``Systems/Animation` — 动画
- `Models/Feature``Systems/Feature` — 特性/属性
- `Models/Move``Systems/Move` — 移动
- `Models/Skill``Systems/Skill` — 技能
- `HFSkillTrigger_*` — 技能触发器
- `HFSkill_*_Releaser` — 技能释放器
- `GameEntity/RVO/RVOManager.cs` — RVO 避障
---
## 使用规则
- 新实体类型应继承 `HFAbsEntity`
- 实体对象统一通过 `HFEntityPool` 创建和回收。
- 系统通过 `AddSystem<T>()` 添加,避免直接 new。
- 子系统数据更新放在 `OnModelUpdate()`,表现更新放在 `OnSystemUpdate()`
---
## 相关模块
- [技能系统](../技能系统/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) | 模块登记规则定义分类和状态口径 |