2026-06-12 17:56:35 +08:00

6.5 KiB
Raw Blame History

空引用异常

  • 分类blocking
  • Issue 数1
  • 0.7.3f 最近一天次数1
  • 设备数合计1
  • 报告生成2026-06-12 11:47:43

Issue

Issue 类型 次数 设备 最近上报 消息
be8ba33741c7c959e4bff388decf5877 NullReferenceException 1 1 2026-06-12 08:18:49 Object reference not set to an instance of an object.

设备上下文

be8ba33741c7c959e4bff388decf5877

  • 样本 CrashId7997bf30a7de4592ba275e94beb9aa2c
  • 样本 DeviceIdfc-5c-ee-24-76-6f
  • CrashSight 附带日志文件:False

最终上报内容:

NullReferenceException
Object reference not set to an instance of an object.
Animancer.AnimancerState.get_NormalizedTime () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerState.set_Time (System.Single value) (at <00000000000000000000000000000000>.0)
Animancer.AnimancerState.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerLayer.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerComponent.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerComponent.OnDisable () (at <00000000000000000000000000000000>.0)

Animancer.AnimancerState.get_NormalizedTime () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerState.set_Time (System.Single value) (at <00000000000000000000000000000000>.0)
Animancer.AnimancerState.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerLayer.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerComponent.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerComponent.OnDisable () (at <00000000000000000000000000000000>.0)

Animancer.AnimancerState.get_NormalizedTime () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerState.set_Time (System.Single value) (at <00000000000000000000000000000000>.0)
Animancer.AnimancerState.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerLayer.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerComponent.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerComponent.OnDisable () (at <00000000000000000000000000000000>.0)

NullReferenceException
Object reference not set to an instance of an object.
Animancer.AnimancerState.get_NormalizedTime () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerState.set_Time (System.Single value) (at <00000000000000000000000000000000>.0)
Animancer.AnimancerState.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerLayer.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerComponent.Stop () (at <00000000000000000000000000000000>.0)
Animancer.AnimancerComponent.OnDisable () (at <00000000000000000000000000000000>.0)

同设备最近 ERROR 上报序列:

时间 Issue 类型 消息
2026-06-12 08:18:49 be8ba33741c7c959e4bff388decf5877
2026-06-12 08:18:49 3b1873b47fcdc15a0284798ea83be004
2026-06-12 08:12:46 9b415b4bbb546c66eba3a6b67f916d35
2026-06-11 20:55:53 6ff1f0f506a936917fe66abad560829d
2026-06-11 18:42:48 01eaa6aefd9162eccc930c2450a63779
2026-06-10 20:18:08 bb81bce180d8672f500aa9f2021ec9f8
2026-06-10 20:03:53 bb81bce180d8672f500aa9f2021ec9f8
2026-06-10 19:59:22 9b415b4bbb546c66eba3a6b67f916d35

代码位置

  • 第三方崩溃栈入口:Unity/Assets/Plugins/Animancer/AnimancerComponent.cs:244OnDisable() 根据 DisableAction 进入 Stop()
  • 第三方停止链路:Unity/Assets/Plugins/Animancer/AnimancerComponent.cs:571 -> Unity/Assets/Plugins/Animancer/Internal/Core/AnimancerLayer.cs:785 -> Unity/Assets/Plugins/Animancer/Internal/Core/AnimancerState.cs:356
  • 第三方空引用读点:Unity/Assets/Plugins/Animancer/Internal/Core/AnimancerState.cs:561NormalizedTime 读取 Length/Time 时触发最终 NullReferenceException
  • 项目侧候选触发入口:所有“播放 FadeOut 后 SetActive(false)/销毁挂 Animancer 的 UI 对象”的路径,优先看 Unity/Assets/Scripts/TH1_UI/View/Base/View.cs:148Unity/Assets/Scripts/TH1_UI/Core/CommonUI.cs:70Unity/Assets/Scripts/TH1_UI/View/Common/UIConfirmPopupMono.cs:58
  • 同设备同秒伴随症状:Releasing render texture that is set as Camera.targetTexture!。项目中可见的目标纹理绑定在 Unity/Assets/BundleResources/Prefab/UI/Info/UIInfoGridInfo.prefab:2284:6909,快速开关入口在 Unity/Assets/Scripts/TH1_UI/View/Info/UIInfoGridInfoView.cs:302:563。这条目前只能作为伴随症状,不能直接证明为 Animancer NRE 根因。

解码结论

  • OPS 反混淆命中为 0因为这条栈没有项目混淆符号CrashSight 已显示完整第三方 Animancer 调用链。
  • 崩溃家族归并为“Animancer 组件禁用时 Stop 链路空引用”Unity 禁用某个挂有 AnimancerComponent 的对象时进入 AnimancerComponent.OnDisable(),默认 DisableAction.Stop 调用 Stop(),随后逐层停止 AnimancerLayer/AnimancerState,最终在 AnimancerState.NormalizedTime 读时间/长度时空引用。
  • 设备上下文只暴露最终上报和同设备 ERROR 序列,hasLogFile=false,缺少完整 Unity 日志。因此本报告能确认“禁用/销毁 Animancer 对象触发第三方 Stop 链路 NRE”但不能唯一定位是哪一个 UI 实例触发。
  • 同设备同一秒还有高频 Releasing render texture that is set as Camera.targetTexture!,说明该玩家当时也发生了预览相机/RenderTexture 生命周期问题;它和本 NRE 可能同属 UI/资源关闭时序问题,但当前样本不能证明二者有直接因果关系。

判断

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

建议

优先复现“打开/关闭带 Animancer 淡入淡出的弹窗或视图时立刻切换页面、销毁视图、退出场景”的路径;重点检查 UI 关闭时是否在 Animancer 内部仍有无效 state/playable 时触发 OnDisable Stop。若要修复,建议先在项目侧统一封装 UI 关闭前的 Animancer 停止/解绑策略,避免直接改第三方 Animancer 源码。