5.5 KiB
5.5 KiB
移动攻击高亮字典 Key 缺失
- 分类:blocking
- Issue 数:1
0.7.2c最近一天次数:1- 设备数合计:1
- 报告生成:2026-06-05 12:00:37
Issue
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|---|---|---|---|---|---|
| 0bbff28f08b867749349762f2e47eac2 | KeyNotFoundException | 1 | 1 | 2026-06-05 10:54:12 | The given key '1986' was not present in the dictionary. |
设备上下文
0bbff28f08b867749349762f2e47eac2
- 样本 CrashId:
7ad7856bc6e64f8d824b7f9017c505c7 - 样本 DeviceId:
00-24-01-f5-1f-01 - CrashSight 附带日志文件:
False
最终上报内容:
KeyNotFoundException
The given key '1149' was not present in the dictionary.
fj.bgn (System.UInt32 a) (at <00000000000000000000000000000000>.0)
gi.bla (cfo a, bsr b) (at <00000000000000000000000000000000>.0)
TH1_Presentation.Sequencer.Task.InputSequencerTask.fvd (System.Action a) (at <00000000000000000000000000000000>.0)
erl.fcy () (at <00000000000000000000000000000000>.0)
cvl.ggk () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
fj.bgn (System.UInt32 a) (at <00000000000000000000000000000000>.0)
gi.bla (cfo a, bsr b) (at <00000000000000000000000000000000>.0)
TH1_Presentation.Sequencer.Task.InputSequencerTask.fvd (System.Action a) (at <00000000000000000000000000000000>.0)
erl.fcy () (at <00000000000000000000000000000000>.0)
cvl.ggk () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
fj.bgn (System.UInt32 a) (at <00000000000000000000000000000000>.0)
gi.bla (cfo a, bsr b) (at <00000000000000000000000000000000>.0)
TH1_Presentation.Sequencer.Task.InputSequencerTask.fvd (System.Action a) (at <00000000000000000000000000000000>.0)
erl.fcy () (at <00000000000000000000000000000000>.0)
cvl.ggk () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
KeyNotFoundException
The given key '1149' was not present in the dictionary.
fj.bgn (System.UInt32 a) (at <00000000000000000000000000000000>.0)
gi.bla (cfo a, bsr b) (at <00000000000000000000000000000000>.0)
TH1_Presentation.Sequencer.Task.InputSequencerTask.fvd (System.Action a) (at <00000000000000000000000000000000>.0)
erl.fcy () (at <00000000000000000000000000000000>.0)
cvl.ggk () (at <00000000000000000000000000000000>.0)
TH1_Logic.Core.Main.Update () (at <00000000000000000000000000000000>.0)
同设备最近 ERROR 上报序列:
| 时间 | Issue | 类型 | 消息 |
|---|---|---|---|
| 2026-06-05 11:00:27 | 10d4df507992c1a66a90693df20b21c3 | ||
| 2026-06-05 10:54:22 | 76c4c1b1a5add246455aec813c46d59a | ||
| 2026-06-05 10:54:18 | bb81bce180d8672f500aa9f2021ec9f8 | ||
| 2026-06-05 10:54:15 | 10d4df507992c1a66a90693df20b21c3 | ||
| 2026-06-05 10:54:12 | 0bbff28f08b867749349762f2e47eac2 | ||
| 2026-06-05 10:54:11 | b9356ab138b2b54e96f3db7887c3b8d0 | ||
| 2026-06-05 10:54:06 | bb81bce180d8672f500aa9f2021ec9f8 | ||
| 2026-06-05 10:54:02 | 10d4df507992c1a66a90693df20b21c3 |
代码位置
Unity/Assets/Scripts\TH1_Renderer\MapRenderer.cs:594: public bool SetUnitAllMoveAttackTargetHighlight(uint uid) //渲染所有可移动位置的高亮,其中可以攻击的位置要标红,如果是自己人或者敌人在移动范围内但是不在攻击范围内,则不能高亮Unity/Assets/Scripts\TH1_Logic\Map\MapInteraction.cs:269: MapRenderer.Instance.SetUnitAllMoveAttackTargetHighlight(unitData.Id);Unity/Assets/Scripts\TH1_Logic\Skill\AllSkill\InfiltrateSkill.cs:140: // 依赖 CalcUnitMoveInfo 已对 self 计算过(玩家点击路径由 SetUnitAllMoveAttackTargetHighlight 保证;Unity/Assets/Scripts\TH1_Renderer\MapRenderer.cs:642: ROGridMap[targetGridData.Id].SetMoveHighlight(true);Unity/Assets/Scripts\TH1_Renderer\MapRenderer.cs:678: ROGridMap[targetGridData.Id].SetAttackHighlight(true);Unity/Assets/Scripts\TH1_Renderer\MapRenderer.cs:686: ROGridMap[targetGridData.Id].SetMoveHighlight(true);
解码结论
解码栈直接是 TH1Renderer.MapRenderer.SetUnitAllMoveAttackTargetHighlight -> Dictionary<uint, ...>.get_Item,缺失 key 为 1986。与 007_map-click-move-keynotfound 相同,根因是移动/攻击高亮计算得到的 targetGridData.Id 没有对应 ROGridMap 渲染项;本 Issue 不是定时器包装,而是点击/选择单位后立即刷新高亮时直接抛出的 KeyNotFound。
可疑源码点是 ROGridMap[targetGridData.Id] 的直接索引访问,以及 targetGridDataList 可能来自逻辑地图但未保证所有格子都有 renderer。和 007 合并时应按“MapRenderer 高亮字典 key 缺失”处理,但保留两个报告可以区分触发入口:一个是移动后的延迟复点,一个是选择/刷新高亮的直接入口。
判断
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
本批样本 hasLogFile=false,API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
建议
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。