- 新增UnityEntities注意事项.md文档,记录Unity Entities开发中的重要注意事项 - 更新README.md,添加对新文档的引用 - 按照项目目录结构整理文档位置
2.7 KiB
2.7 KiB
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 需要指定泛型参数
- AbsHFAIModel 不能直接获取系统,应通过事件或模型进行通信
- AbsHFAnimationModel 需要配合AbsHFFMSModel使用
事件驱动架构
- 自定义事件需继承
AbsHFEventArg<enHFCTCEvent> - 事件ID使用
enHFCTCEvent.Custom或其他预定义事件 - 事件分发使用
Dispatch()方法