Files
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

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 关联 IModelISystem

添加系统:

AddSystem<T>()
  -> HFClassEntityManager.Instance.GetClassEntity<T>()  // 创建或复用系统对象
  -> 生成对应 IModel
  -> model.Init(this, system.Init)  // 建立实体、模型、系统关系

更新顺序:

OnSystemUpdate()  // 表现层更新
OnModelUpdate()   // 数据层更新

实体池机制

HFEntityPoolenEntityLayer 注册不同的 AbsHFEntityPool 实现。

创建实体:

AbsHFEntityPool.OnCreateEnity<T>()
  -> 创建 GameObject 根节点
  -> 维护 onlyid -> entity 索引
  -> 维护 EntityId -> onlyid 索引

查询实体:

HFEntityPool.SelectByOnlyid(onlyid)
  -> 通过 onlyid -> enEntityLayer 找到对应池
  -> 从具体池取实体

回收实体:

DelEntityByOnlyid(onlyid)
  -> 从池索引移除
  -> 调用 entity.Recycle()

子系统

实体相关的子系统通常位于:

  • Models/AISystems/AI — AI
  • Models/AnimationSystems/Animation — 动画
  • Models/FeatureSystems/Feature — 特性/属性
  • Models/MoveSystems/Move — 移动
  • Models/SkillSystems/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 模块登记规则定义分类和状态口径