Files
UnityAI/03_核心功能/Entity/UnityEntities注意事项.md
Shiliang fc14440497 feat: 添加Unity Entities注意事项文档并更新README
- 新增UnityEntities注意事项.md文档,记录Unity Entities开发中的重要注意事项
- 更新README.md,添加对新文档的引用
- 按照项目目录结构整理文档位置
2026-06-02 10:16:04 +08:00

73 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Unity Entities 注意事项和最佳实践
## 1. 枚举定义相关
### enHFCTCEvent 枚举
- **新增项**`Custom = 281` - 用于自定义事件
- **用途**在HFEvent_OnDamage等自定义事件中使用
- **注意**:添加新事件时,确保数值不与其他事件冲突
### enEntityLayer 枚举
- **现有项**`None=0`, `Role`, `Monster`, `Max`
- **注意**:没有`Enemy`项,敌人应归类为`Monster`
## 2. 实体-系统-模型 (ESM) 架构相关
### HFAbsEntity 访问方式
- **Transform访问**:使用 `entity.gameObject.transform.position` 而不是 `entity.transform.position`
- **属性访问**:使用公共属性如 `entity.NormalATK` 而不是私有字段 `entity.m_NormalATK`
- **系统获取**HFAbsEntity 没有 `GetSystem<T>()` 方法,只有 `GetModel<T>()` 方法
- **模型获取**:通过 `entity.GetModel<T>()` 获取模型实例
### 系统间通信
- **推荐方式**:通过事件系统进行通信,而不是直接获取其他系统
- **事件分发**:使用 `event.Dispatch()` 而不是 `HFFunCatalogue.Event.TCEvent.SendEvent()`
## 3. 数据表字段映射
### Role表字段
- `Lifefold` -> 生命值
- `Attackfold` -> 攻击力
- `Defensefold` -> 防御力
- `AttackRange` -> 攻击范围
- `CriticalRate` -> 暴击率
- `CriticalDamage` -> 暴击伤害
- **注意**Role表中没有速度字段 (SPD)
## 4. 动画系统相关
### FSM (有限状态机) 系统
- **HFFMSModel** 现在包含 `CurrentSkeletonAnimation` 属性
- **访问方式**:通过 `FSM.CurrentSkeletonAnimation` 访问SkeletonAnimation
- **动画速度设置**:使用 `skeletonAnimation.timeScale = speed`
## 5. AI系统相关
### HFAIModel_Enemy
- **伤害处理**:通过事件系统 (`HFEvent_OnDamage`) 而不是直接获取系统
- **攻击逻辑**:创建并分发伤害事件,让其他系统处理实际伤害计算
## 6. 错误处理和调试
### 常见错误类型
- **CS0117**: 枚举中不包含指定定义 - 检查枚举项是否存在
- **CS1061**: 类型不包含指定定义 - 检查属性/方法名是否正确
- **CS0122**: 成员因保护级别不可访问 - 使用公共API而不是私有字段
### 修复策略
- 优先使用公共属性而不是私有字段
- 通过事件系统进行组件间通信
- 正确访问GameObject的Transform组件
- 使用正确的枚举值
## 7. 架构模式
### 系统-模型 (System-Model) 模式
- **AbsHFMoveSystem<T>** 需要指定泛型参数
- **AbsHFAIModel** 不能直接获取系统,应通过事件或模型进行通信
- **AbsHFAnimationModel** 需要配合AbsHFFMSModel使用
### 事件驱动架构
- 自定义事件需继承 `AbsHFEventArg<enHFCTCEvent>`
- 事件ID使用 `enHFCTCEvent.Custom` 或其他预定义事件
- 事件分发使用 `Dispatch()` 方法