- 删除 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>
3.5 KiB
3.5 KiB
实体系统
分类
- 核心框架
目的
管理游戏实体的创建、生命周期、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 内部维护两个集合:
m_Models : IModel[] // 数据层
m_Systems : ISystem[] // 表现层/逻辑层
按 enSystemType 关联 IModel 和 ISystem。
添加系统:
AddSystem<T>()
-> HFClassEntityManager.Instance.GetClassEntity<T>() // 创建或复用系统对象
-> 生成对应 IModel
-> model.Init(this, system.Init) // 建立实体、模型、系统关系
更新顺序:
OnSystemUpdate() // 表现层更新
OnModelUpdate() // 数据层更新
实体池机制
HFEntityPool 按 enEntityLayer 注册不同的 AbsHFEntityPool 实现。
创建实体:
AbsHFEntityPool.OnCreateEnity<T>()
-> 创建 GameObject 根节点
-> 维护 onlyid -> entity 索引
-> 维护 EntityId -> onlyid 索引
查询实体:
HFEntityPool.SelectByOnlyid(onlyid)
-> 通过 onlyid -> enEntityLayer 找到对应池
-> 从具体池取实体
回收实体:
DelEntityByOnlyid(onlyid)
-> 从池索引移除
-> 调用 entity.Recycle()
子系统
实体相关的子系统通常位于:
Models/AI、Systems/AI— AIModels/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()。
相关模块
文档关联
当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。
| 文档 | 关联原因 |
|---|---|
| modules/模块索引.md | 模块索引是项目知识总入口 |
| modules/frameworks/技能系统/README.md | 技能系统是实体系统的子系统 |
| modules/frameworks/内存对象管理/README.md | 实体池与对象池机制相关 |
| rules/10-架构说明.md | 架构说明定义总体分层和依赖方向 |
| rules/30-模块登记规则.md | 模块登记规则定义分类和状态口径 |