2026-06-08 14:36:31 +08:00

6.0 KiB
Raw Blame History

早苗治疗技能空引用

  • 分类blocking
  • Issue 数1
  • 0.7.3d 最近一天次数2
  • 设备数合计2
  • 报告生成2026-06-08 12:00:23

Issue

Issue 类型 次数 设备 最近上报 消息
d1fc636405540ae6f8e208b96c02b620 UnityLogError 2 2 2026-06-08 09:02:53 Timer任务执行异常: 错误信息: SANAEDIVINE - SANAENINE 异常类型: System.NullReferenceException 异常信息: Object reference not set to an instance of an object. 调用堆栈: at bsr.guy () [0x00000] in <00000000000000000000000000000000>:0 at bsr.guz () [0x00000] in <00000000000000000000000000000000>:0 at edc.ial (cfo a, bsr b, bsr c, Logic.Skill.SanaeDivineType d) [0x00000] in <00000000…

设备上下文

d1fc636405540ae6f8e208b96c02b620

  • 样本 CrashId6c4845ff9ea141039942e32df5c3cc2d
  • 样本 DeviceIdb4-2e-99-cc-22-b5
  • CrashSight 附带日志文件:False

最终上报内容:

UnityLogError
Timer任务执行异常:
错误信息: SANAEDIVINE - SANAENINE
异常类型: System.NullReferenceException
异常信息: Object reference not set to an instance of an object.
调用堆栈:   at bsr.guy () [0x00000] in <00000000000000000000000000000000>:0 
  at bsr.guz () [0x00000] in <00000000000000000000000000000000>:0 
  at edc.ial (cfo a, bsr b, bsr c, Logic.Skill.SanaeDivineType d) [0x00000] in <00000000000000000000000000000000>:0 
  at edc+cqj.iai () [0x00000] in <00000000000000000000000000000000>:0 
  at i.oj () [0x00000] in <00000000000000000000000000000000>:0 
  at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0 
目标对象: edc
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()

UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()

UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()

UnityLogError
Timer任务执行异常:
错误信息: SANAEDIVINE - SANAENINE
异常类型: System.NullReferenceException
异常信息: Object reference not set to an instance of an object.
调用堆栈:   at bsr.guy () [0x00000] in <00000000000000000000000000000000>:0 
  at bsr.guz () [0x00000] in <00000000000000000000000000000000>:0 
  at edc.ial (cfo a, bsr b, bsr c, Logic.Skill.SanaeDivineType d) [0x00000] in <00000000000000000000000000000000>:0 
  at edc+cqj.iai () [0x00000] in <00000000000000000000000000000000>:0 
  at i.oj () [0x00000] in <00000000000000000000000000000000>:0 
  at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0 
目标对象: edc
UnityEngine.Debug.LogError(Object)
hk.LogError(String, Object)
i.oj()
TH1_Logic.Core.Main.Update()

同设备最近 ERROR 上报序列:

时间 Issue 类型 消息
2026-06-08 11:54:36 13021b124af1bc7fdcc5bb8e1aa1671a
2026-06-08 09:02:53 d1fc636405540ae6f8e208b96c02b620
2026-06-08 08:55:15 4b42e043c64194e31205b4fa1a9b4d2d
2026-06-08 08:44:26 7f4b5f2120392523233850a9617b09ea
2026-06-08 01:37:02 83c5b5b46447ac4e50101f1148f4ab70
2026-06-08 01:01:11 13f609ef7cac4bbf2cbfecbe708524c3
2026-06-08 00:45:15 bb81bce180d8672f500aa9f2021ec9f8
2026-06-08 00:30:11 10d4df507992c1a66a90693df20b21c3

代码位置

  • Unity/Assets/Scripts\TH1_Logic\Skill\AllSkill\SanaeDivineSkill.cs:82: timer.TimerRegister(this, playOmikuji,1.1f * i,"SANAEDIVINE - SANAENINE - OnHeal");

解码结论

此 Issue 是 SanaeDivineSkill 的计时器回调中真实空引用。解码后的异常栈为:

  • Timer.Update() 执行 SANAEDIVINE - SANAENINE 回调。
  • Logic.Skill.SanaeDivineSkill/<>c__DisplayClass7_1.<OnDamageOther>b__0() 调用 SanaeDivineSkill.OmikujiAnim(mapData, originGrid, liveTargetGrid, divine)
  • SanaeDivineSkill.OmikujiAnim() 内部执行 origin.InMainSight() || target.InMainSight()
  • RuntimeData.GridData.InMainSight() 调用 RuntimeData.GridData.IsMainMap(),最终空引用在 GridData.IsMainMap()

代码定位:

  • Unity/Assets/Scripts/TH1_Logic/Skill/AllSkill/SanaeDivineSkill.cs:176 注册 SANAEDIVINE - SANAENINE 延迟回调。
  • Unity/Assets/Scripts/TH1_Logic/Skill/AllSkill/SanaeDivineSkill.cs:235OmikujiAnim() 虽然检查了参数非空,但 238 调用的是 GridData.InMainSight(),该方法依赖全局 Main.MapData
  • Unity/Assets/Scripts/TH1_Data/GridData.cs:513IsMainMap() 直接访问 Main.MapData.GridMap,当计时器回调晚于地图切换/退出/重建,或当前主图不是传入 mapData 时,可能空引用或误判。

合并依据CrashSight 明确包含 System.NullReferenceException、目标对象 Logic.Skill.SanaeDivineSkill,两次发生在 2 台设备;同设备近期还有相似 action/AI 诊断,但本条阻断的栈已经完整指向早苗技能动画回调,不能归并到那些普通诊断。

建议聚焦:SanaeDivineSkill 的延迟视觉回调用捕获的 mapData 做主图/视野判断,或在执行前确认 mapData == Main.MapData && Main.MapData?.GridMap != null。更稳的是给 GridData.InMainSight() 的调用点增加可传入 map 的安全版本,避免延迟技能表现访问已失效的全局主图。这个根因还可能导致早苗三连神签的投射物/VFX缺失、治疗/伤害后的表现中断,以及 Timer 捕获异常后继续堆积后续视觉任务。

判断

这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。 本批样本 hasLogFile=falseAPI 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。

建议

优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。