- 移除 MGetsComp 中未使用的属性和方法,简化组件结构 - 在 MissionGetsComp 中实现动态加载奖励图标功能,支持从 gui/uicons 图集获取 - 调整 get.prefab 结构,分离图标和数字显示节点 - 解决资源加载机制限制,确保动态加载资源正常工作
124 lines
7.2 KiB
Markdown
124 lines
7.2 KiB
Markdown
1. [已完成] HeroAttrsComp 架构问题:数据层与表现层耦合
|
||
|
||
- 位置:assets/script/game/hero/HeroAttrsComp.ts 的 add_hp、add_mp
|
||
- 问题:属性组件中直接通过 this.ent.get(HeroViewComp) 更新视图,
|
||
数据层与表现层强耦合,不利于复用(例如无头战斗逻辑)。
|
||
|
||
- ✅ 已完成:
|
||
- 移除 HeroAttrsComp 中对 HeroViewComp 的直接依赖,仅维护数值;
|
||
- 实现脏标签机制,数据层只负责设置脏标签,视图层在update中检查并更新;
|
||
- 保证 HeroAttrsComp 只处理战斗数值逻辑,不直接操作表现层。
|
||
|
||
- 具体修改:
|
||
- HeroAttrsComp.ts: add_hp/add_mp/add_shield 只设置脏标签,不调用视图层
|
||
- HeroViewComp.ts: health/mp_add 只显示特效,不调用 hp_show/mp_show
|
||
- HeroViewComp.ts: update() 中通过脏标签按需更新UI
|
||
- 优化效果:消除双重UI更新,实现真正的按需更新,提升性能
|
||
|
||
2. [待实现] SACastSystem 扩展治疗/护盾技能支持
|
||
|
||
- 位置:assets/script/game/hero/SACastSystem.ts
|
||
- 现状:只支持 SType.damage (伤害技能),缺少 SType.heal/shield 等辅助技能处理
|
||
- 待实现功能:
|
||
- 在 executeCast() 中添加技能类型判断分支
|
||
- 实现 executeHealSkill() 方法:治疗技能逻辑
|
||
- 根据技能配置的治疗量修改目标HP
|
||
- 触发治疗特效(通过 HeroViewComp.health())
|
||
- 数据层已支持,只需调用 add_hp() + 触发特效
|
||
- 实现 executeShieldSkill() 方法:护盾技能逻辑
|
||
- 根据技能配置的护盾量修改目标护盾值
|
||
- 触发护盾特效(通过 HeroViewComp.add_shield())
|
||
- 数据层已支持,只需调用 add_shield() + 触发特效
|
||
- 实现 findEntityAtPosition() 辅助方法:根据位置查找目标实体
|
||
- 注意事项:
|
||
- SkillSet 中暂时没有治疗/护盾技能配置,等配置就绪后实现
|
||
- 目标选择逻辑需根据实际设计实现(血量最低友军/随机友军等)
|
||
- 治疗量/护盾量需从技能配置读取,当前使用占位值
|
||
|
||
3. [问题] SkillSet 目标组枚举命名与注释语义不一致
|
||
|
||
- 位置:assets/script/game/common/config/SkillSet.ts 的 TGroup
|
||
- 现状:Ally/Team 的注释与字面含义相反,容易导致配置选错目标阵营。
|
||
|
||
3. [问题] SkillSet 多字段“配置存在但运行时未生效”,易造成误配
|
||
|
||
- 位置:assets/script/game/common/config/SkillSet.ts + assets/script/game/skill/SkillView.ts
|
||
- 现状:t_num/hit_num/hitcd/ready/EAnm/DAnm/buffs/neAttrs 等字段当前链路中基本未进入核心逻辑;hit_num 的范围命中逻辑在 SkillView 中被注释。
|
||
- 风险:策划以为有效,实际上无效果。
|
||
|
||
4. [问题] EType 定义的结束类型 > 实际支持的结束类型
|
||
|
||
- 位置:assets/script/game/common/config/SkillSet.ts + assets/script/game/skill/SMoveComp.ts + assets/script/game/skill/SkillView.ts
|
||
- 现状:distanceEnd/countEnd 等缺少对应实现;SkillView 仅处理 animationEnd;SMoveSystem 仅在 timeEnd/collision 才销毁。
|
||
- 风险:配置为 distanceEnd/countEnd 可能导致技能不销毁或销毁时机不符合预期。
|
||
|
||
5. [问题] “穿透/命中次数”概念重复且实现偏一边
|
||
|
||
- 位置:assets/script/game/common/config/HeroAttrs.ts + assets/script/game/common/config/SkillSet.ts + assets/script/game/skill/SkillView.ts
|
||
- 现状:PIERCE/PUNCTURE 两套概念并存,技能销毁只看 (Skill.hit + Attrs.PUNCTURE),t_num/hit_num 不参与。
|
||
|
||
6. [问题] TalSet 的 count 配置未生效
|
||
|
||
- 位置:assets/script/game/common/config/TalSet.ts + assets/script/game/hero/TalComp.ts
|
||
- 现状:talConf 中配置了 count,但 TalComp.addTal() 固定把 count 设为 1。
|
||
- 风险:如“触发后下10次必爆”等配置实际表现会被压缩为 1 次。
|
||
|
||
7. [问题] 天赋触发源不完整:大量 triType 永远不会触发
|
||
|
||
- 位置:assets/script/game/hero/SACastSystem.ts + assets/script/game/hero/HeroAtkSystem.ts
|
||
- 现状:当前只对 ATK/SKILL/MAX 调用 updateCur;DMG/LUP/HPL/HPA/DEAD/INIT 等缺少累计来源。
|
||
|
||
8. [问题] TalEffet 执行分支不完整
|
||
|
||
- 位置:assets/script/game/hero/TalComp.ts
|
||
- 现状:TalEffet.SHIELD/THORNS 等枚举存在,但 doTriggerTal 未覆盖或未完整实现。
|
||
|
||
9. [问题] 百分比/概率“单位体系”混乱(0-1 与 0-100 混用)
|
||
|
||
- 位置:assets/script/game/hero/HeroAtkSystem.ts + assets/script/game/hero/HeroAttrsComp.ts + assets/script/game/common/config/TalSet.ts + assets/script/game/common/config/TDLevelOptions.ts
|
||
- 现状:战斗概率判定使用 0-100;add_hp/add_mp 的百分比却按 0-1 乘上限;强化池与天赋表里同时出现 0.14 表示 14% 这种写法。
|
||
- 风险:显示/描述与实际生效严重偏差(例如显示 +14%,实际可能只加 0.14 或反过来直接回满)。
|
||
|
||
10. [问题] TDLevelOptions 强化池当前未接入实际流程
|
||
|
||
- 位置:assets/script/game/common/config/TDLevelOptions.ts
|
||
- 现状:getNormalBuffs/getTalentBuffs 在代码中未被引用,属于孤岛配置。
|
||
|
||
11. [问题] 强化池常规等级选项集合恒定
|
||
|
||
- 位置:assets/script/game/common/config/TDLevelOptions.ts
|
||
- 现状:多数等级池子只有 4 条且默认抽 4 个,实际仅随机排序,没有“随机性”。
|
||
|
||
12. [问题] 上限规则仅写在 note 文本,未强制 clamp
|
||
|
||
- 位置:assets/script/game/hero/HeroAttrsComp.ts + assets/script/game/common/config/TDLevelOptions.ts
|
||
- 现状:clamp 只限制 CRITICAL/DODGE/HIT;STUN_CHANCE/FREEZE_CHANCE/LIFESTEAL 等未做强制上限。
|
||
|
||
13. [严重问题] 攻速/技速对 CD 不生效
|
||
|
||
- 位置:assets/script/game/hero/HeroSkills.ts
|
||
- 现状:resetCD 里按 AS/SS 计算了 cd,但随后又把 cd 覆盖回 cd_max。
|
||
- 风险:攻速/技速体系失效,强化与天赋相关数值无法体现。
|
||
|
||
14. [问题] 资源加载机制限制:gui 目录资源无法直接获取
|
||
|
||
- 位置:assets/script/game/map/HInfoComp.ts 及资源目录
|
||
- 现状:`oops.res.get` 仅能获取已预加载的资源。当前初始化流程(LoadingViewComp)仅预加载了 `game` 目录,导致 `gui` 目录下的资源无法通过代码动态获取。
|
||
- 影响:设计师无法随意引用 `gui` 下的资源,限制了界面开发的灵活性。
|
||
- 建议方案:
|
||
1. 规范:将所有动态加载的资源统一放入 `assets/resources/game` 目录下(推荐)。
|
||
2. 扩展:在 LoadingViewComp 中增加 `gui` 目录的预加载(需评估内存和启动时间)。
|
||
- 风险:攻速/技速体系失效,强化与天赋相关数值无法体现。
|
||
|
||
14. [严重问题] 计数型天赋 key 与属性枚举不一致,导致天赋效果读取失败
|
||
|
||
- 位置:assets/script/game/hero/TalComp.ts + assets/script/game/hero/HeroAtkSystem.ts
|
||
- 现状:TalComp 写入使用 TalEffet.DMG_RED(等),HeroAtkSystem 读取却用 Attrs.DMG_RED/Attrs.THORNS。
|
||
- 风险:减伤/反伤等计数型天赋永远不生效或表现异常。
|
||
|
||
15. [问题] 多处存在 “|| 0 + xxx” 的运算优先级坑
|
||
|
||
- 位置:assets/script/game/hero/HeroAtkSystem.ts
|
||
- 现状:会在属性非 0 时吞掉天赋增量(或相反),导致数值叠加不符合预期。
|
||
|