Files
pixelheros/assets/script/todo.md
panw b869e1c33c fix(map): 修复任务奖励图标加载问题并重构组件逻辑
- 移除 MGetsComp 中未使用的属性和方法,简化组件结构
- 在 MissionGetsComp 中实现动态加载奖励图标功能,支持从 gui/uicons 图集获取
- 调整 get.prefab 结构,分离图标和数字显示节点
- 解决资源加载机制限制,确保动态加载资源正常工作
2026-01-27 16:02:33 +08:00

124 lines
7.2 KiB
Markdown
Raw Permalink 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.
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 仅处理 animationEndSMoveSystem 仅在 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 调用 updateCurDMG/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-100add_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/HITSTUN_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 时吞掉天赋增量(或相反),导致数值叠加不符合预期。