修复线上阻断
This commit is contained in:
parent
22384b5a8d
commit
333a146a0e
@ -0,0 +1,94 @@
|
||||
# 空引用异常
|
||||
|
||||
- 分类:blocking
|
||||
- Issue 数:1
|
||||
- `0.7.3f` 最近一天次数:1
|
||||
- 设备数合计:1
|
||||
- 报告生成:2026-06-12 11:47:43
|
||||
|
||||
## Issue
|
||||
|
||||
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---:|---:|---|---|
|
||||
| [be8ba33741c7c959e4bff388decf5877](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/be8ba33741c7c959e4bff388decf5877?pid=10) | NullReferenceException | 1 | 1 | 2026-06-12 08:18:49 | Object reference not set to an instance of an object. |
|
||||
|
||||
## 设备上下文
|
||||
|
||||
### be8ba33741c7c959e4bff388decf5877
|
||||
|
||||
- 样本 CrashId:`7997bf30a7de4592ba275e94beb9aa2c`
|
||||
- 样本 DeviceId:`fc-5c-ee-24-76-6f`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
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:244`,`OnDisable()` 根据 `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:561`,`NormalizedTime` 读取 `Length/Time` 时触发最终 `NullReferenceException`。
|
||||
- 项目侧候选触发入口:所有“播放 FadeOut 后 `SetActive(false)`/销毁挂 Animancer 的 UI 对象”的路径,优先看 `Unity/Assets/Scripts/TH1_UI/View/Base/View.cs:148`、`Unity/Assets/Scripts/TH1_UI/Core/CommonUI.cs:70`、`Unity/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=false`,API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
|
||||
|
||||
## 建议
|
||||
|
||||
优先复现“打开/关闭带 Animancer 淡入淡出的弹窗或视图时立刻切换页面、销毁视图、退出场景”的路径;重点检查 UI 关闭时是否在 Animancer 内部仍有无效 state/playable 时触发 `OnDisable Stop`。若要修复,建议先在项目侧统一封装 UI 关闭前的 Animancer 停止/解绑策略,避免直接改第三方 Animancer 源码。
|
||||
42
MD/CrashSight_2026-06-12_0.7.3f_1day/files_to_check.md
Normal file
42
MD/CrashSight_2026-06-12_0.7.3f_1day/files_to_check.md
Normal file
@ -0,0 +1,42 @@
|
||||
# 0.7.3f 最近一天建议关注文件
|
||||
|
||||
采集窗口:2026-06-12 11:47:43,CrashSight `last_1_day`,版本 `0.7.3f`。
|
||||
|
||||
## Blocking 优先
|
||||
|
||||
| 文件 | 原因 |
|
||||
|---|---|
|
||||
| `Unity/Assets/Plugins/Animancer/AnimancerComponent.cs:244` | 崩溃栈进入点:`OnDisable()` 触发 `DisableAction.Stop`。第三方源码,建议只用于定位,不直接修改。 |
|
||||
| `Unity/Assets/Plugins/Animancer/Internal/Core/AnimancerLayer.cs:785` | `Stop()` 遍历所有 state,进入具体 `AnimancerState.Stop()`。 |
|
||||
| `Unity/Assets/Plugins/Animancer/Internal/Core/AnimancerState.cs:356` | `Stop()` 将 `Time = 0`,随后栈中读取 `NormalizedTime`。 |
|
||||
| `Unity/Assets/Plugins/Animancer/Internal/Core/AnimancerState.cs:561` | CrashSight 顶层空引用位置:`NormalizedTime`。 |
|
||||
| `Unity/Assets/Scripts/TH1_UI/View/Base/View.cs:148` | 通用 View 关闭流程,FadeOut 结束后 `SetActive(false)`,会触发挂载对象上的 `AnimancerComponent.OnDisable()`。 |
|
||||
| `Unity/Assets/Scripts/TH1_UI/Core/CommonUI.cs:70` | 通用 UI Hide 流程,定时 `SetActive(false)`。 |
|
||||
| `Unity/Assets/Scripts/TH1_UI/View/Common/UIConfirmPopupMono.cs:58` | 弹窗关闭动画结束后直接 `SetActive(false)`。 |
|
||||
| `Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideLibraryMusicPanelMono.cs:230` | 关闭/切换音乐库面板时显式 `Animancer.Stop()` 与 `SetActive(false)`,属于同类生命周期高风险路径。 |
|
||||
|
||||
## 同秒伴随症状
|
||||
|
||||
| 文件 | 原因 |
|
||||
|---|---|
|
||||
| `Unity/Assets/BundleResources/Prefab/UI/Info/UIInfoGridInfo.prefab:2284` | 预览相机绑定 `TileMapPreview.renderTexture`,对应高频 `Releasing render texture that is set as Camera.targetTexture!`。 |
|
||||
| `Unity/Assets/BundleResources/Prefab/UI/Info/UIInfoGridInfo.prefab:6909` | 同上,第二个预览相机 targetTexture 绑定。 |
|
||||
| `Unity/Assets/Materials/TileMapPreview.renderTexture` | 被预览相机引用的 RenderTexture 资源。 |
|
||||
| `Unity/Assets/Scripts/TH1_UI/View/Info/UIInfoGridInfoView.cs:302` | Grid 预览相机快速启用后 0.001 秒关闭。 |
|
||||
| `Unity/Assets/Scripts/TH1_UI/View/Info/UIInfoGridInfoView.cs:563` | City 预览相机快速启用后 0.001 秒关闭。 |
|
||||
|
||||
## 高频 LogError 后续排查
|
||||
|
||||
| 文件 | 原因 |
|
||||
|---|---|
|
||||
| `Unity/Assets/Scripts/TH1_Logic/AI/AIActionBase.cs:528` | `死循环了`,8 次,2 台设备。 |
|
||||
| `Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:179` | AI 死循环记录点补充日志。 |
|
||||
| `Unity/Assets/Scripts/TH1_Logic/AI/AILogic.cs:230` | `存在相似action`,同一设备出现 1 次。 |
|
||||
| `Unity/Assets/Scripts/TH1_Logic/Steam/SimpleP2P.cs:480` | `Connection failed - Reason: 1000`,4 次,3 台设备。 |
|
||||
| `Unity/Assets/Scripts/TH1_Logic/Steam/SimpleP2P.cs:505` | `应用层拒绝连接 - 错误码: 1000`,2 次,2 台设备。 |
|
||||
| `Unity/Assets/Scripts/TH1_AOT/ResourceLoader.cs:84` | `YooAssets.LoadAssetSync<MultilingualData>("Assets/BundleResources/Export/Multilingual")` 后 `GetAssetObject<MultilingualData>()` 返回 null,Issue: `949458f51e04d6cf3f4ff9ee18b7e160`、`f5aa9c0a1411b1f09fd13146d745090d`、`b176950b03c8f954ad35f9520da10d23`。 |
|
||||
| `Unity/Assets/Scripts/TH1_Logic/Multilingual/MultilingualManager.cs:263` | `RefreshMultilingualData()` 懒加载 `_multilingualData`,调用栈来自 `UIOutsideWikiView.OnDispose()` 清理子物体时触发的 `MultilingualTextMono.OnEnable()`。 |
|
||||
| `Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideWikiView.cs:589` | `DetachAndDestroy()` 先 `SetParent(null)` 再 `Destroy(go)`,该过程会让待销毁的多语言文本组件触发 `OnEnable()`,从而暴露多语言资源加载为空。 |
|
||||
| `Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1215` | `CompleteExecute Player 不一致`,1 次。 |
|
||||
| `Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1397` | `UnitRendererMismatchBeforeAction` 数据层/渲染层 Unit 不一致,3 次。 |
|
||||
| `Unity/Assets/Scripts/TH1_Logic/Unit/UnitLogic.cs:683` | `Origin Player is null`,1 次。 |
|
||||
38
MD/CrashSight_2026-06-12_0.7.3f_1day/index.md
Normal file
38
MD/CrashSight_2026-06-12_0.7.3f_1day/index.md
Normal file
@ -0,0 +1,38 @@
|
||||
# CrashSight 0.7.3f 最近一天 ERROR 分析
|
||||
|
||||
- 捕获时间:2026-06-12 11:47:43
|
||||
- 筛选范围:`0.7.3f`,`last_1_day`,ERROR,未处理/处理中
|
||||
- CrashSight numFound:14
|
||||
- 去重 Issue:14
|
||||
- blocking:1 个 Issue,1 次
|
||||
- logerror:13 个 Issue,45 次
|
||||
- 原始数据:`Temp\CrashSight\Daily_2026-06-12_0.7.3f`
|
||||
|
||||
## 阻断家族
|
||||
|
||||
| 家族 | Issue 数 | 次数 | 报告 |
|
||||
|---|---:|---:|---|
|
||||
| 空引用异常 | 1 | 1 | [blocking/001_null-reference.md](blocking/001_null-reference.md) |
|
||||
|
||||
## 非阻断高频
|
||||
|
||||
| 类别 | Issue 数 | 次数 |
|
||||
|---|---:|---:|
|
||||
| 其他项目诊断日志 | 4 | 25 |
|
||||
| AI 计算死循环保护 | 1 | 8 |
|
||||
| P2P/大厅连接失败诊断 | 2 | 6 |
|
||||
| 多语言资源加载为空 | 3 | 3 |
|
||||
| Origin Player 为空诊断 | 1 | 1 |
|
||||
| 相似 Action 重复诊断 | 1 | 1 |
|
||||
| 行动执行玩家不一致 | 1 | 1 |
|
||||
|
||||
## 报告
|
||||
|
||||
- [LogError Summary](logerror_summary.md)
|
||||
- [空引用异常](blocking/001_null-reference.md)
|
||||
- [建议关注文件清单](files_to_check.md)
|
||||
|
||||
## 说明
|
||||
|
||||
blocking 的判定只认真实异常类型、异常对象或调用栈;纯 `LogSystem.LogError` 业务状态诊断归入 logerror。
|
||||
本次通过 CrashSight OpenAPI 抓取样本详情和同设备最近 ERROR 上报序列;若样本 `hasLogFile=false`,文档会明确标记上下文限制。
|
||||
36
MD/CrashSight_2026-06-12_0.7.3f_1day/logerror_summary.md
Normal file
36
MD/CrashSight_2026-06-12_0.7.3f_1day/logerror_summary.md
Normal file
@ -0,0 +1,36 @@
|
||||
# LogError Summary
|
||||
|
||||
- 筛选范围:`0.7.3f`,`last_1_day`,ERROR,status `0,2`
|
||||
- 捕获时间:2026-06-12 11:47:43
|
||||
- 非阻断 Issue:13
|
||||
- 非阻断次数:45
|
||||
|
||||
## 分类汇总
|
||||
|
||||
| 类别 | Issue 数 | 次数 | 设备数 | 代码位置 | 示例 Issue |
|
||||
|---|---:|---:|---:|---|---|
|
||||
| 其他项目诊断日志 | 4 | 25 | 14 | RenderTexture 伴随日志可查 `Unity/Assets/BundleResources/Prefab/UI/Info/UIInfoGridInfo.prefab:2284`、`:6909` 和 `Unity/Assets/Scripts/TH1_UI/View/Info/UIInfoGridInfoView.cs:302`、`:563`;Unit 渲染不一致可查 `Unity/Assets/Scripts/TH1_Logic/Action/ActionLogic.cs:1397` | 3b1873b47fcdc15a0284798ea83be004, 3734a997ed6d691a08e092e56913c40a, a63d7c50108ffe49f2c02217f3d8eee8 |
|
||||
| AI 计算死循环保护 | 1 | 8 | 2 | Unity/Assets/Scripts\TH1_Logic\AI\AIActionBase.cs:528: LogSystem.LogError($"死循环了");<br>Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:179: LogSystem.LogError($"死循环了,最终记录点为:{MainEditor.Instance.BTNodeId}"); | 3e65a3369290cfa41e540f0612aefad5 |
|
||||
| P2P/大厅连接失败诊断 | 2 | 6 | 5 | Unity/Assets/Scripts\TH1_Logic\Steam\SimpleP2P.cs:480: LogSystem.LogError($"Connection failed - Reason: {endReason}"); | 03e368c38bf498c0ede3d3d6b1a4ba9, 5bf29273f5c83382e8a559c3a51c64b1 |
|
||||
| 多语言资源加载为空 | 3 | 3 | 1 | `Unity/Assets/Scripts/TH1_AOT/ResourceLoader.cs:84` 加载 `Assets/BundleResources/Export/Multilingual` 后 `GetAssetObject<MultilingualData>()` 返回 null;调用点在 `Unity/Assets/Scripts/TH1_Logic/Multilingual/MultilingualManager.cs:263` | 949458f51e04d6cf3f4ff9ee18b7e160, f5aa9c0a1411b1f09fd13146d745090d, b176950b03c8f954ad35f9520da10d23 |
|
||||
| Origin Player 为空诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:683: LogSystem.LogError($"Origin Player is null target.id:{target.Id}");<br>Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:738: LogSystem.LogError($"RecoverHealth Origin Player is null target.id:{target.Id}"); | 76c4a73c625af53a1601bc284e2e3013 |
|
||||
| 相似 Action 重复诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:230: if(_sameCount > 5) LogSystem.LogError($"存在相似action ,记录点为:{MainEditor.Instance.BTNodeId} ," + | f1c119ee9f0c60b7f3a383def5491cd6 |
|
||||
| 行动执行玩家不一致 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1215: LogSystem.LogError($"CompleteExecute Player 不一致 {ActionId.GetStringLog()}"); | 217a8eace225fadbb28fe9c001b38d7c |
|
||||
|
||||
## 明细
|
||||
|
||||
| Issue | 类别 | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---|---:|---:|---|---|
|
||||
| [3b1873b47fcdc15a0284798ea83be004](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3b1873b47fcdc15a0284798ea83be004?pid=10) | 其他项目诊断日志 | UnityLogError | 22 | 11 | 2026-06-12 11:32:04 | Releasing render texture that is set as Camera.targetTexture! |
|
||||
| [3e65a3369290cfa41e540f0612aefad5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3e65a3369290cfa41e540f0612aefad5?pid=10) | AI 计算死循环保护 | UnityLogError | 8 | 2 | 2026-06-12 10:59:12 | 死循环了 |
|
||||
| [03e368c38bf498c0ede3d3d6b1a4ba9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/03e368c38bf498c0ede3d3d6b1a4ba9?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 4 | 3 | 2026-06-12 11:36:58 | Connection failed - Reason: 1000 |
|
||||
| [5bf29273f5c83382e8a559c3a51c64b1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5bf29273f5c83382e8a559c3a51c64b1?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 2 | 2 | 2026-06-12 11:32:04 | 应用层拒绝连接 - 错误码: 1000,可能原因:1.对方未创建监听套接字 2.对方主动拒绝 3.对方游戏未运行 |
|
||||
| [217a8eace225fadbb28fe9c001b38d7c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/217a8eace225fadbb28fe9c001b38d7c?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-12 11:33:23 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : ThirdHero |
|
||||
| [3734a997ed6d691a08e092e56913c40a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3734a997ed6d691a08e092e56913c40a?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 10:32:02 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=634905386, ActionIndex=437, DataUnits=33, RenderUnits=34, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[436]: Version=436, MapHash=a2d84780acdfeabc1a2702f510a3ffa4 Action : Build Wonder : None Resource : Mine Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitA… |
|
||||
| [76c4a73c625af53a1601bc284e2e3013](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/76c4a73c625af53a1601bc284e2e3013?pid=10) | Origin Player 为空诊断 | UnityLogError | 1 | 1 | 2026-06-12 08:27:06 | Origin Player is null target.id:430 |
|
||||
| [949458f51e04d6cf3f4ff9ee18b7e160](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/949458f51e04d6cf3f4ff9ee18b7e160?pid=10) | 多语言资源加载为空 | UnityLogError | 1 | 1 | 2026-06-12 08:00:04 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [a63d7c50108ffe49f2c02217f3d8eee8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a63d7c50108ffe49f2c02217f3d8eee8?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 10:32:00 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=634905386, ActionIndex=429, DataUnits=34, RenderUnits=35, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[428]: Version=428, MapHash=be3b9dab92fa24c2de8ac5f6baab80c1 Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None … |
|
||||
| [b176950b03c8f954ad35f9520da10d23](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b176950b03c8f954ad35f9520da10d23?pid=10) | 多语言资源加载为空 | UnityLogError | 1 | 1 | 2026-06-12 07:55:21 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [e0e8d47df59e68e38968a6d05ed1a882](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e0e8d47df59e68e38968a6d05ed1a882?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 07:48:53 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=2242826177, ActionIndex=3149, DataUnits=61, RenderUnits=62, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3148]: Version=3148, MapHash=0ceb6f1746ddba5ef68843f17bc7ad60 Action : UnitAttackAlly Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation… |
|
||||
| [f1c119ee9f0c60b7f3a383def5491cd6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f1c119ee9f0c60b7f3a383def5491cd6?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-12 10:59:09 | 存在相似action ,记录点为:771 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : Trade PlayerAction : None AIParam : AllClear Tech : Trade CultureCardType : None 重复次数 :6 |
|
||||
| [f5aa9c0a1411b1f09fd13146d745090d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f5aa9c0a1411b1f09fd13146d745090d?pid=10) | 多语言资源加载为空 | UnityLogError | 1 | 1 | 2026-06-12 08:00:04 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
124
MD/CrashSight_2026-06-12_0.7.3f_1day/report_manifest.json
Normal file
124
MD/CrashSight_2026-06-12_0.7.3f_1day/report_manifest.json
Normal file
@ -0,0 +1,124 @@
|
||||
{
|
||||
"date": "2026-06-12",
|
||||
"version": "0.7.3f",
|
||||
"capture": {
|
||||
"capturedAtUtc": "2026-06-12T03:47:43+00:00",
|
||||
"capturedAtLocal": "2026-06-12 11:47:43",
|
||||
"rawDir": "Temp\\CrashSight\\Daily_2026-06-12_0.7.3f",
|
||||
"reportDir": "MD\\CrashSight_2026-06-12_0.7.3f_1day"
|
||||
},
|
||||
"filter": {
|
||||
"version": "0.7.3f",
|
||||
"date": "last_1_day",
|
||||
"status": "0,2",
|
||||
"exceptionCategoryList": "ERROR",
|
||||
"sortField": "uploadTime",
|
||||
"sortOrder": "desc",
|
||||
"rows": 100
|
||||
},
|
||||
"totalIssues": 14,
|
||||
"blockingIssues": 1,
|
||||
"blockingOccurrences": 1,
|
||||
"logerrorIssues": 13,
|
||||
"logerrorOccurrences": 45,
|
||||
"blockingReports": [
|
||||
{
|
||||
"categoryId": "null-reference",
|
||||
"title": "空引用异常",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"path": "blocking/001_null-reference.md",
|
||||
"issues": [
|
||||
"be8ba33741c7c959e4bff388decf5877"
|
||||
]
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
{
|
||||
"id": "other-logerror",
|
||||
"title": "其他项目诊断日志",
|
||||
"class": "logerror",
|
||||
"issueCount": 4,
|
||||
"occurrences": 25,
|
||||
"issues": [
|
||||
"3b1873b47fcdc15a0284798ea83be004",
|
||||
"3734a997ed6d691a08e092e56913c40a",
|
||||
"a63d7c50108ffe49f2c02217f3d8eee8",
|
||||
"e0e8d47df59e68e38968a6d05ed1a882"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ai-loop-guard",
|
||||
"title": "AI 计算死循环保护",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 8,
|
||||
"issues": [
|
||||
"3e65a3369290cfa41e540f0612aefad5"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "p2p-lobby-connection-failure",
|
||||
"title": "P2P/大厅连接失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 6,
|
||||
"issues": [
|
||||
"03e368c38bf498c0ede3d3d6b1a4ba9",
|
||||
"5bf29273f5c83382e8a559c3a51c64b1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "multilingual-empty-id",
|
||||
"title": "多语言资源加载为空",
|
||||
"class": "logerror",
|
||||
"issueCount": 3,
|
||||
"occurrences": 3,
|
||||
"issues": [
|
||||
"949458f51e04d6cf3f4ff9ee18b7e160",
|
||||
"f5aa9c0a1411b1f09fd13146d745090d",
|
||||
"b176950b03c8f954ad35f9520da10d23"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "origin-player-null-diagnostic",
|
||||
"title": "Origin Player 为空诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"76c4a73c625af53a1601bc284e2e3013"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "duplicate-similar-action",
|
||||
"title": "相似 Action 重复诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"f1c119ee9f0c60b7f3a383def5491cd6"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "null-reference",
|
||||
"title": "空引用异常",
|
||||
"class": "blocking",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"be8ba33741c7c959e4bff388decf5877"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "action-completeexecute-player-mismatch",
|
||||
"title": "行动执行玩家不一致",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"217a8eace225fadbb28fe9c001b38d7c"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,184 @@
|
||||
# 空引用异常
|
||||
|
||||
- 分类:blocking
|
||||
- Issue 数:4
|
||||
- `0.7.3f` 最近一天次数:13
|
||||
- 设备数合计:11
|
||||
- 报告生成:2026-06-12 16:25:01
|
||||
|
||||
## Issue
|
||||
|
||||
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---:|---:|---|---|
|
||||
| [dc1340f866d020b4b560a92559c89a21](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dc1340f866d020b4b560a92559c89a21?pid=10) | NullReferenceException | 6 | 4 | 2026-06-12 16:03:14 | Object reference not set to an instance of an object. |
|
||||
| [0b41041d271c3ca1128d6f10e46b27b2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0b41041d271c3ca1128d6f10e46b27b2?pid=10) | NullReferenceException | 3 | 3 | 2026-06-12 15:31:04 | Object reference not set to an instance of an object. |
|
||||
| [be8ba33741c7c959e4bff388decf5877](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/be8ba33741c7c959e4bff388decf5877?pid=10) | NullReferenceException | 3 | 3 | 2026-06-12 15:14:07 | Object reference not set to an instance of an object. |
|
||||
| [0c808432af82e7b66883205719dbb199](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0c808432af82e7b66883205719dbb199?pid=10) | NullReferenceException | 1 | 1 | 2026-06-12 12:42:42 | Object reference not set to an instance of an object. |
|
||||
|
||||
## 设备上下文
|
||||
|
||||
### dc1340f866d020b4b560a92559c89a21
|
||||
|
||||
- 样本 CrashId:`9d358b3dfdfd4f7190a195db17919deb`
|
||||
- 样本 DeviceId:`10-a5-1d-d7-c8-a9`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
```
|
||||
|
||||
同设备最近 ERROR 上报序列:
|
||||
|
||||
| 时间 | Issue | 类型 | 消息 |
|
||||
|---|---|---|---|
|
||||
| 2026-06-12 16:19:06 | 17ad3797303c790702e726900b44d7a1 | | |
|
||||
| 2026-06-12 16:18:37 | 6df319596397f5671ef968efb898f881 | | |
|
||||
| 2026-06-12 16:18:37 | 7e0a6be9e06fe532cdb7190689ec4278 | | |
|
||||
| 2026-06-12 16:18:36 | 294ddb9ea1ed79f4f9685b30604d29d1 | | |
|
||||
| 2026-06-12 16:18:36 | bf8f3431f83bdb17e88844103a9457b5 | | |
|
||||
| 2026-06-12 16:18:36 | 0fb8e72617856627c8e9fe73dad72806 | | |
|
||||
| 2026-06-12 16:18:35 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
| 2026-06-12 16:18:35 | bd5cfa8f38ec18d109c8d9687f4a6f2a | | |
|
||||
|
||||
### 0b41041d271c3ca1128d6f10e46b27b2
|
||||
|
||||
- 样本 CrashId:`5ad98ebcb8f44bc39580417051d745bb`
|
||||
- 样本 DeviceId:`00-ff-fb-5d-e8-e7`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
```
|
||||
|
||||
同设备最近 ERROR 上报序列:
|
||||
|
||||
| 时间 | Issue | 类型 | 消息 |
|
||||
|---|---|---|---|
|
||||
| 2026-06-12 16:21:58 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 16:21:15 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
| 2026-06-12 16:21:15 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
| 2026-06-12 16:21:14 | ed493d4b6926c3bb5efe569a5db211e3 | | |
|
||||
| 2026-06-12 16:21:14 | 5506094b5e9df26bc4d5fd90349178cb | | |
|
||||
| 2026-06-12 16:00:01 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
| 2026-06-12 15:59:59 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 15:38:25 | 115622af2c5f78d14b4e6b900ba1d151 | | |
|
||||
|
||||
### be8ba33741c7c959e4bff388decf5877
|
||||
|
||||
- 样本 CrashId:`7cc68a71c55b4abbab7c7cdb370d6a46`
|
||||
- 样本 DeviceId:`d4-93-90-2e-72-b4`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
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 16:11:35 | f5aa9c0a1411b1f09fd13146d745090d | | |
|
||||
| 2026-06-12 15:54:43 | b176950b03c8f954ad35f9520da10d23 | | |
|
||||
| 2026-06-12 15:54:43 | bae1cbeda505602c5dbbc984c0fa1d88 | | |
|
||||
| 2026-06-12 15:54:42 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
| 2026-06-12 15:14:07 | be8ba33741c7c959e4bff388decf5877 | | |
|
||||
| 2026-06-12 15:14:06 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
| 2026-06-12 15:10:32 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 15:05:27 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
|
||||
## 代码位置
|
||||
|
||||
- 未通过固定文本直接定位;需要结合解码栈继续追。
|
||||
|
||||
## 判断
|
||||
|
||||
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
|
||||
本批样本 `hasLogFile=false`,API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
|
||||
|
||||
## 建议
|
||||
|
||||
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。
|
||||
@ -0,0 +1,75 @@
|
||||
# 重大事件公告 UI 空引用
|
||||
|
||||
- 分类:blocking
|
||||
- Issue 数:1
|
||||
- `0.7.3f` 最近一天次数:1
|
||||
- 设备数合计:1
|
||||
- 报告生成:2026-06-12 16:25:01
|
||||
|
||||
## Issue
|
||||
|
||||
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---:|---:|---|---|
|
||||
| [fe24c7bf54531228f55d73530508a9fa](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fe24c7bf54531228f55d73530508a9fa?pid=10) | UnityLogError | 1 | 1 | 2026-06-12 15:02:34 | EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object. at TH1_UI.View.Announce.UIAnnounceMajorEventView.SetContent (TH1_Core.Events.UIAnnounceMajorEventType eventType, System.Int32 param1, System.Int32 param2) [0x00000] in <00000000000000000000000000000000>:0 at TH… |
|
||||
|
||||
## 设备上下文
|
||||
|
||||
### fe24c7bf54531228f55d73530508a9fa
|
||||
|
||||
- 样本 CrashId:`18ce090edbf0448097312f6fd79db8d6`
|
||||
- 样本 DeviceId:`80-fa-5b-68-87-2b`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
UnityLogError
|
||||
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object.
|
||||
at TH1_UI.View.Announce.UIAnnounceMajorEventView.SetContent (TH1_Core.Events.UIAnnounceMajorEventType eventType, System.Int32 param1, System.Int32 param2) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Announce.UIAnnounceMajorEventController.OnOpen () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T]._TrueOpen () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T]._OnViewStart () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T]._TryOpen () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T].Open () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T].OpenWithParam (System.Object param) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Presentation.Sequencer.Task.UISequencerTask.Execute (System.Action onComplete) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Managers.PresentationManager.TryProcessNext () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Managers.PresentationManager.EnqueueTask (TH1_Presentation.Sequencer.Task.ISequencerTask task, System.Boolean viewNextFrame) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Events.UIEventManagerBinder.HandleShowUIAnnounceMajorEvent (TH1_Core.Events.ShowUIAnnounceMajorEvent evt) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Managers.EventManager.Publish[T] (T eventData) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Logic.Core.Main+<>c.<NetStartGame>b__50_0 () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at Timer.Update () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
|
||||
UnityEngine.Debug.LogError(Object)
|
||||
Logic.CrashSight.LogSystem.LogError(String, Object)
|
||||
TH1_Core.Managers.EventManager.Pub
|
||||
...
|
||||
```
|
||||
|
||||
同设备最近 ERROR 上报序列:
|
||||
|
||||
| 时间 | Issue | 类型 | 消息 |
|
||||
|---|---|---|---|
|
||||
| 2026-06-12 15:50:53 | 16bd34f1b4756ad8655c843c0f9da506 | | |
|
||||
| 2026-06-12 15:50:52 | ed7645351344dd651c0a27dfc3573b10 | | |
|
||||
| 2026-06-12 15:34:56 | 26e2c7ab0fb8fdb0d95355ae254b4995 | | |
|
||||
| 2026-06-12 15:34:41 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 15:02:34 | fe24c7bf54531228f55d73530508a9fa | | |
|
||||
| 2026-06-12 15:02:25 | 96f415d89f78f0ac31e19174e23246ba | | |
|
||||
| 2026-06-12 15:02:25 | 29ea271af8759bbf7e679bf751ef6373 | | |
|
||||
| 2026-06-12 15:02:24 | 519eac5f561dfb99ea775c5294065411 | | |
|
||||
|
||||
## 代码位置
|
||||
|
||||
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:16: public class UIAnnounceMajorEventView : Base.View`
|
||||
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:63: LogSystem.LogError("UIAnnounceMajorEventView.SetContent(): Title or Content or Image or Image is null");`
|
||||
- `Unity/Assets/Scripts\TH1_UI\Controller\Announce\UIAnnounceMajorEventController.cs:15: public class UIAnnounceMajorEventController : ViewController<UIAnnounceMajorEventView>, IEscClosable // 泛型参数是对应的View脚本`
|
||||
|
||||
## 判断
|
||||
|
||||
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
|
||||
本批样本 `hasLogFile=false`,API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
|
||||
|
||||
## 建议
|
||||
|
||||
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。
|
||||
@ -0,0 +1,261 @@
|
||||
# 0.7.3f blocking 修复方案
|
||||
|
||||
数据来源:`MD/CrashSight_2026-06-12_0.7.3f_blocking_root_1624/blocking_root_causes.md`。
|
||||
|
||||
## 修复优先级
|
||||
|
||||
1. P0:`UIAnnounceMajorEventView.SetContent(StartGame)` 读取空 `Main.MapData`。
|
||||
2. P1:UI Animancer 在 Disable 时执行 `Stop()` 导致空引用。
|
||||
3. P1:TMP 子网格在 UI Disable/Mask 刷新期间执行 `UpdateMaterial()` 导致空引用。
|
||||
|
||||
## 1. 开局重大事件公告空引用
|
||||
|
||||
### 问题
|
||||
|
||||
CrashSight 栈:
|
||||
|
||||
```text
|
||||
Main+<>c.<NetStartGame>b__50_0()
|
||||
EventManager.Publish<ShowUIAnnounceMajorEvent>()
|
||||
UIAnnounceMajorEventView.SetContent(StartGame)
|
||||
```
|
||||
|
||||
当前代码问题:
|
||||
|
||||
- `Main.NetStartGame()` 在 `Unity/Assets/Scripts/TH1_Logic/Core/Main.cs:617` 注册 `Main_CenterMessage_Anim`,1.5 秒后发布 `StartGame` 公告。
|
||||
- 公告事件进入 `PresentationManager.EnqueueTask()`,不保证马上打开 UI。
|
||||
- UI 真正打开时,`Unity/Assets/Scripts/TH1_UI/View/Announce/UIAnnounceMajorEventView.cs:76` 直接读取 `Main.MapData.PlayerMap.SelfPlayerData`。
|
||||
- 同设备 9 秒前已经有 `OnGridInfoAction Error: Main.MapData is null`,说明这个窗口期里 `Main.MapData` 可能已经为空或被切走。
|
||||
|
||||
### 首选修复
|
||||
|
||||
做两层保护:定时器入队前过滤旧任务,View 打开时再次校验。
|
||||
|
||||
1. 在 `Main` 里把开局公告注册收敛成一个方法,三处注册点都调用它:
|
||||
|
||||
```csharp
|
||||
private const string StartGameAnnouncementTimer = "Main_CenterMessage_Anim";
|
||||
|
||||
private void RegisterStartGameAnnouncement(MapData expectedMap)
|
||||
{
|
||||
Timer.Instance?.CancelByMessage(StartGameAnnouncementTimer);
|
||||
|
||||
Timer.Instance?.TimerRegister(this, () =>
|
||||
{
|
||||
if (!IsValidStartGameAnnouncementMap(expectedMap)) return;
|
||||
if (!ReferenceEquals(MapData, expectedMap)) return;
|
||||
|
||||
EventManager.Publish(new ShowUIAnnounceMajorEvent
|
||||
{
|
||||
EventType = UIAnnounceMajorEventType.StartGame,
|
||||
Map = expectedMap,
|
||||
});
|
||||
}, 1.5f, StartGameAnnouncementTimer);
|
||||
}
|
||||
|
||||
private static bool IsValidStartGameAnnouncementMap(MapData map)
|
||||
{
|
||||
return map?.PlayerMap?.SelfPlayerData != null;
|
||||
}
|
||||
```
|
||||
|
||||
2. 给 `ShowUIAnnounceMajorEvent` 增加可选 `MapData Map` 字段。`UIEvents.cs` 当前已经引用了 `RuntimeData.MapData`,这是本地 UI 事件,不涉及网络序列化。
|
||||
|
||||
3. `UIAnnounceMajorEventController.OnOpen()` 不要只传 `EventType/Param1/Param2`,改成把整个事件传给 View。View 侧用 `evt.Map ?? Main.MapData`,并且如果是 `StartGame`,要求 `ReferenceEquals(Main.MapData, evt.Map)`。
|
||||
|
||||
4. 把 `UIAnnounceMajorEventView.SetContent(...)` 改成返回 `bool` 或新增 `TrySetContent(...)`。如果 map/player/table 数据无效,返回 `false`,Controller 立刻 `Close()`,避免空面板卡住演出队列。
|
||||
|
||||
5. 在会清空地图的路径取消定时器:
|
||||
|
||||
- `Main.Clear()`:先 `Timer.Instance?.CancelByMessage(StartGameAnnouncementTimer)`,再 `MapData = null`。
|
||||
- 已有 `AbortHostMultiStart()` 里取消了这个 timer,保留。
|
||||
- `UIManager.Instance.OnMatchEnd()`/`PresentationManager.OnMatchEnd()` 已经会清理演出队列;确保所有返回大厅/结束对局路径都走到它。
|
||||
|
||||
### 止血修复
|
||||
|
||||
如果先快速发一版,可以先在 `SetContent(StartGame)` 第 76 行前加保护:
|
||||
|
||||
```csharp
|
||||
var map = Main.MapData;
|
||||
var player = map?.PlayerMap?.SelfPlayerData;
|
||||
if (player == null)
|
||||
{
|
||||
LogSystem.LogWarning("Skip StartGame announcement: Main.MapData or SelfPlayerData is null");
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
这能阻止 blocking,但不是完整修复。完整修复仍要处理 stale timer/stale presentation task。
|
||||
|
||||
### 验证
|
||||
|
||||
- 联机成员进局后 1.5 秒内断线、强制重连、返回大厅,不能再出现 `fe24...`。
|
||||
- 开局公告正常显示时,`StartGame` 文案、领袖图、气泡仍正常。
|
||||
- CrashSight 不再新增 `EventManager Publish<ShowUIAnnounceMajorEvent> listener failed`。
|
||||
|
||||
## 2. Animancer OnDisable Stop 空引用
|
||||
|
||||
### 问题
|
||||
|
||||
CrashSight 栈:
|
||||
|
||||
```text
|
||||
AnimancerComponent.OnDisable()
|
||||
AnimancerComponent.Stop()
|
||||
AnimancerState.Stop()
|
||||
AnimancerState.set_Time()
|
||||
AnimancerState.get_NormalizedTime()
|
||||
```
|
||||
|
||||
当前代码/资源状态:
|
||||
|
||||
- `AnimancerComponent` 默认 `_ActionOnDisable` 是 `Stop`。
|
||||
- 很多 UI prefab 里 `_ActionOnDisable: 0`,也就是 `Stop`。
|
||||
- `Stop` 会把动画状态时间归零,过程中访问 `NormalizedTime/Length`。当内部 state/clip/playable 已经无效时,就会 NRE。
|
||||
|
||||
### 首选修复
|
||||
|
||||
UI 上的 Animancer 不要在 `OnDisable` 走 `Stop`,改成 `Pause`。
|
||||
|
||||
推荐做一个统一 UI 初始化工具,而不是手工改散落 prefab:
|
||||
|
||||
```csharp
|
||||
public static void ConfigureUiAnimancers(GameObject root)
|
||||
{
|
||||
if (root == null) return;
|
||||
var animancers = root.GetComponentsInChildren<AnimancerComponent>(true);
|
||||
foreach (var animancer in animancers)
|
||||
{
|
||||
if (animancer == null) continue;
|
||||
animancer.ActionOnDisable = AnimancerComponent.DisableAction.Pause;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
调用点:
|
||||
|
||||
- `Unity/Assets/Scripts/TH1_UI/View/Base/View.cs:41` 获取 `_animancer` 后,对当前 View root 下所有 UI Animancer 执行配置。
|
||||
- `Unity/Assets/Scripts/TH1_UI/Core/CommonUI.cs:30` 获取 `_animancer` 后执行配置。
|
||||
- 有独立 `public AnimancerComponent Animancer` 的 panel mono,也可以在 `Awake/OnEnable/Open` 前统一配置。
|
||||
|
||||
### 不建议的修复
|
||||
|
||||
- 不建议直接改 `Unity/Assets/Plugins/Animancer/AnimancerComponent.cs` 的默认行为。它会影响非 UI 动画、单位动画、VFX,风险比 UI 局部配置大。
|
||||
- 不建议只改某一个 prefab,因为 CrashSight 没有对象名,且 `_ActionOnDisable: 0` 分布很广。
|
||||
|
||||
### 验证
|
||||
|
||||
- `rg "_ActionOnDisable: 0" Unity/Assets/BundleResources/Prefab/UI`,确认 UI prefab 中默认 `Stop` 已被运行时配置覆盖,或者资源批处理改成 `1`。
|
||||
- 批量打开/关闭常见 UI:公告、确认弹窗、BottomBar 弹窗、Outside 菜单、Wiki/图鉴、多人房间。
|
||||
- CrashSight 不再新增 `be8ba33741c7c959e4bff388decf5877`。
|
||||
|
||||
## 3. TMP_SubMeshUI.UpdateMaterial 空引用
|
||||
|
||||
### 问题
|
||||
|
||||
CrashSight 栈:
|
||||
|
||||
```text
|
||||
TMP_SubMeshUI.UpdateMaterial()
|
||||
TMP_SubMeshUI.SetMaterialDirty()
|
||||
MaskableGraphic.OnDisable()
|
||||
TMP_SubMeshUI.OnDisable()
|
||||
```
|
||||
|
||||
或:
|
||||
|
||||
```text
|
||||
TMP_SubMeshUI.UpdateMaterial()
|
||||
TMP_SubMeshUI.SetMaterialDirty()
|
||||
MaskUtilities.NotifyStencilStateChanged()
|
||||
MaskableGraphic.OnDisable()
|
||||
Image.OnDisable()
|
||||
```
|
||||
|
||||
当前包源码问题:
|
||||
|
||||
- `TMP_SubMeshUI.SetMaterialDirty()` 在 `Unity/Library/PackageCache/com.unity.textmeshpro@3.0.7/Scripts/Runtime/TMP_SubMeshUI.cs:617` 直接调用 `UpdateMaterial()`。
|
||||
- `UpdateMaterial()` 只检查 `m_sharedMaterial == null`,随后读取 `textComponent.fontSharedMaterial` 和 `canvasRenderer`。
|
||||
- Disable/Destroy/Mask 刷新期间,父 `TextMeshProUGUI`、font material、canvas renderer 状态可能已经无效。
|
||||
|
||||
### 首选修复
|
||||
|
||||
不要直接改 `Library/PackageCache`,这个目录不是稳定源码。稳定方式是把 `com.unity.textmeshpro@3.0.7` embed 到项目 `Packages` 后再补丁。
|
||||
|
||||
补丁方向:
|
||||
|
||||
```csharp
|
||||
public override void SetMaterialDirty()
|
||||
{
|
||||
m_materialDirty = true;
|
||||
|
||||
if (!isActiveAndEnabled)
|
||||
return;
|
||||
|
||||
if (canvasRenderer == null)
|
||||
return;
|
||||
|
||||
UpdateMaterial();
|
||||
|
||||
m_OnDirtyMaterialCallback?.Invoke();
|
||||
}
|
||||
|
||||
protected override void UpdateMaterial()
|
||||
{
|
||||
if (m_sharedMaterial == null)
|
||||
return;
|
||||
|
||||
var text = textComponent;
|
||||
if (text == null || text.fontSharedMaterial == null)
|
||||
return;
|
||||
|
||||
if (canvasRenderer == null)
|
||||
return;
|
||||
|
||||
if (m_sharedMaterial.HasProperty(ShaderUtilities.ShaderTag_CullMode))
|
||||
{
|
||||
float cullMode = text.fontSharedMaterial.GetFloat(ShaderUtilities.ShaderTag_CullMode);
|
||||
m_sharedMaterial.SetFloat(ShaderUtilities.ShaderTag_CullMode, cullMode);
|
||||
}
|
||||
|
||||
var material = materialForRendering;
|
||||
if (material == null)
|
||||
return;
|
||||
|
||||
canvasRenderer.materialCount = 1;
|
||||
canvasRenderer.SetMaterial(material, 0);
|
||||
}
|
||||
```
|
||||
|
||||
### UI 层补充修复
|
||||
|
||||
这个栈通常来自 UI 禁用/销毁时的 TMP 子对象。即使打了 TMP guard,也建议修一下高频动态销毁点:
|
||||
|
||||
- Wiki/图鉴动态列表、描述组、技能/行动 circle 销毁时,先清理回调、停止相关动画,再销毁。
|
||||
- 对带 TMP 和 Mask 的动态条目,避免同一帧内大量 `SetParent(null)` + `Destroy()` + 立即重建 Layout。必要时延迟一帧重建 Layout,或集中到一个安全的 UI 回收工具。
|
||||
|
||||
注意:当前 CrashSight 没有对象名,不能证明一定是 Wiki;Wiki 只是从源码看最需要重点压测的动态 TMP 销毁场景。
|
||||
|
||||
### 不建议的修复
|
||||
|
||||
- 不建议只在业务 View 里包 try/catch。异常发生在 Unity UI/TMP 生命周期里,业务层未必能捕获。
|
||||
- 不建议只靠“多语言加载修复”来解决这个 blocking。多语言 null 是独立 logerror;当前 TMP blocking 栈没有证明它是直接原因。
|
||||
|
||||
### 验证
|
||||
|
||||
- 批量打开/关闭含 TMP + Mask 的 UI:Wiki/图鉴、公告、多人房间、提示、弹窗。
|
||||
- 图鉴里快速切换条目、反复打开关闭、切语言/重载文本。
|
||||
- CrashSight 不再新增 `dc1340...`、`0b410...`、`0c808...`。
|
||||
|
||||
## 建议发版顺序
|
||||
|
||||
1. 先修 `UIAnnounce`:项目代码明确,影响小,能直接消掉 `fe24...`。
|
||||
2. 再做 UI Animancer `ActionOnDisable = Pause` 统一配置:不改第三方包,收益高。
|
||||
3. 最后处理 TMP:优先 embed TMP 包并加 guard;同时压测 Wiki/动态 TMP 销毁路径。
|
||||
|
||||
## 回归检查
|
||||
|
||||
- `dotnet build Unity/Assembly-CSharp.csproj --no-restore`
|
||||
- Unity Editor 内联机新开局、成员断线重连、返回大厅、重新进局。
|
||||
- UI 压测:公告、Wiki/图鉴、Outside 菜单、多人房间、Bottom 弹窗。
|
||||
- 下一批 CrashSight 重点看这 5 个 issue 是否停止增长。
|
||||
@ -0,0 +1,143 @@
|
||||
# 0.7.3f blocking 根因复核
|
||||
|
||||
- 数据来源:CrashSight `0.7.3f`,`last_1_day`,2026-06-12 16:24 左右重新抓取。
|
||||
- 采集结果:66 个 issue,其中 blocking 5 个,logerror 61 个。
|
||||
- 重要限制:5 个 blocking 样本的 `hasLogFile` 都是 `false`。CrashSight 当前能提供未混淆的方法栈、样本设备、同设备 ERROR 上报序列,但没有完整 Unity 日志、GameObject 路径、Prefab 名、UI 层级。
|
||||
- 本文件只列 blocking。`[TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData` 在本批次是 logerror,不在 blocking 列表内;它是独立资源加载问题,不能从当前 blocking 栈证明为这些 blocking 的直接原因。
|
||||
|
||||
## 总览
|
||||
|
||||
| 根因族 | Issue | 次数 | 设备口径 | 当前能定位到哪里 |
|
||||
|---|---:|---:|---:|---|
|
||||
| TMP 子网格 UI 在禁用/遮罩刷新期间空引用 | 3 | 10 | 8 | `TMP_SubMeshUI.UpdateMaterial()` |
|
||||
| Animancer 组件禁用时 Stop 路径空引用 | 1 | 3 | 3 | `AnimancerComponent.OnDisable()` -> `AnimancerState.Stop()` |
|
||||
| 开局重大事件公告读取空 `Main.MapData` | 1 | 1 | 1 | `UIAnnounceMajorEventView.SetContent(StartGame)` |
|
||||
|
||||
## 1. TMP_SubMeshUI.UpdateMaterial 空引用
|
||||
|
||||
相关 issue:
|
||||
|
||||
- `dc1340f866d020b4b560a92559c89a21`:6 次,4 设备,最近 2026-06-12 16:03:14。
|
||||
- `0b41041d271c3ca1128d6f10e46b27b2`:3 次,3 设备,最近 2026-06-12 15:31:04。
|
||||
- `0c808432af82e7b66883205719dbb199`:1 次,1 设备,最近 2026-06-12 12:42:42。
|
||||
|
||||
CrashSight 明确栈:
|
||||
|
||||
```text
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial()
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty()
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable()
|
||||
TMPro.TMP_SubMeshUI.OnDisable()
|
||||
```
|
||||
|
||||
另一个同族栈:
|
||||
|
||||
```text
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial()
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty()
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged(Component mask)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable()
|
||||
UnityEngine.UI.Image.OnDisable()
|
||||
```
|
||||
|
||||
源码落点:
|
||||
|
||||
- `Unity/Library/PackageCache/com.unity.textmeshpro@3.0.7/Scripts/Runtime/TMP_SubMeshUI.cs:608`:`SetMaterialDirty()` 直接调用 `UpdateMaterial()`。
|
||||
- `Unity/Library/PackageCache/com.unity.textmeshpro@3.0.7/Scripts/Runtime/TMP_SubMeshUI.cs:698`:`UpdateMaterial()`。
|
||||
- `Unity/Library/PackageCache/com.unity.textmeshpro@3.0.7/Scripts/Runtime/TMP_SubMeshUI.cs:710`:读取 `textComponent.fontSharedMaterial.GetFloat(...)`。
|
||||
- `Unity/Library/PackageCache/com.unity.textmeshpro@3.0.7/Scripts/Runtime/TMP_SubMeshUI.cs:714`:写 `canvasRenderer.materialCount`。
|
||||
- `Unity/Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/MaskableGraphic.cs:181`:`OnDisable()`。
|
||||
- `Unity/Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/MaskableGraphic.cs:185`:禁用时调用 `SetMaterialDirty()`。
|
||||
- `Unity/Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/MaskUtilities.cs:35`:遮罩状态变更通知子节点重新计算 masking。
|
||||
|
||||
明确结论:
|
||||
|
||||
- 这 3 个 blocking 的直接触发点不是业务代码,而是 UI 对象禁用或遮罩刷新期间,TMP 子网格执行材质刷新。
|
||||
- `TMP_SubMeshUI.UpdateMaterial()` 只检查了 `m_sharedMaterial == null`,随后仍会使用 `textComponent.fontSharedMaterial`、`canvasRenderer`、`materialForRendering` 等状态;CrashSight 的 NRE 就发生在这个刷新路径内。
|
||||
- 当前 CrashSight 没有完整日志和 UI 对象名,因此不能明确到具体哪个 View/Prefab。不能把它归因到 Wiki、多语言或 AB,除非后续样本带上 GameObject/Prefab 上下文。
|
||||
|
||||
## 2. Animancer 禁用 Stop 路径空引用
|
||||
|
||||
相关 issue:
|
||||
|
||||
- `be8ba33741c7c959e4bff388decf5877`:3 次,3 设备,最近 2026-06-12 15:14:07。
|
||||
|
||||
CrashSight 明确栈:
|
||||
|
||||
```text
|
||||
Animancer.AnimancerState.get_NormalizedTime()
|
||||
Animancer.AnimancerState.set_Time(Single value)
|
||||
Animancer.AnimancerState.Stop()
|
||||
Animancer.AnimancerLayer.Stop()
|
||||
Animancer.AnimancerComponent.Stop()
|
||||
Animancer.AnimancerComponent.OnDisable()
|
||||
```
|
||||
|
||||
源码落点:
|
||||
|
||||
- `Unity/Assets/Plugins/Animancer/AnimancerComponent.cs:244`:`OnDisable()`。
|
||||
- `Unity/Assets/Plugins/Animancer/AnimancerComponent.cs:249`:按 `_ActionOnDisable` 分支处理。
|
||||
- `Unity/Assets/Plugins/Animancer/AnimancerComponent.cs:251`:`DisableAction.Stop`。
|
||||
- `Unity/Assets/Plugins/Animancer/AnimancerComponent.cs:252`:调用 `Stop()`。
|
||||
- `Unity/Assets/Plugins/Animancer/Internal/Core/AnimancerState.cs:356`:`AnimancerState.Stop()`。
|
||||
- `Unity/Assets/Plugins/Animancer/Internal/Core/AnimancerState.cs:361`:`Time = 0`。
|
||||
- `Unity/Assets/Plugins/Animancer/Internal/Core/AnimancerState.cs:561`:`NormalizedTime` getter。
|
||||
- `Unity/Assets/Plugins/Animancer/Internal/Core/ClipState.cs:52`:`Length => _Clip.length`。
|
||||
|
||||
明确结论:
|
||||
|
||||
- 这个 blocking 的直接触发点是某个 `AnimancerComponent` 被禁用时执行 `DisableAction.Stop`,Stop 路径把 state 时间归零,过程中访问 `NormalizedTime`/`Length` 时内部动画状态已经无效。
|
||||
- 如果具体 state 是 `ClipState`,`_Clip.length` 是明显的空引用敏感点;但 CrashSight 栈没有记录 state 类型、GameObject 或 Clip 名,所以这里不能进一步确认具体 prefab 或动画资源。
|
||||
- 当前能确定的是禁用生命周期里的 Animancer 状态清理问题;不能证明它由多语言/AB 资源加载失败直接引发。
|
||||
|
||||
## 3. 开局重大事件公告空引用
|
||||
|
||||
相关 issue:
|
||||
|
||||
- `fe24c7bf54531228f55d73530508a9fa`:1 次,1 设备,2026-06-12 15:02:34。
|
||||
|
||||
CrashSight 明确栈:
|
||||
|
||||
```text
|
||||
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException
|
||||
TH1_UI.View.Announce.UIAnnounceMajorEventView.SetContent(...)
|
||||
TH1_UI.Controller.Announce.UIAnnounceMajorEventController.OnOpen()
|
||||
TH1_UI.Controller.Base.ViewController<T>._TrueOpen()
|
||||
TH1_Presentation.Sequencer.Task.UISequencerTask.Execute(...)
|
||||
TH1_Core.Managers.PresentationManager.EnqueueTask(...)
|
||||
TH1_Core.Events.UIEventManagerBinder.HandleShowUIAnnounceMajorEvent(...)
|
||||
TH1_Core.Managers.EventManager.Publish<T>(...)
|
||||
TH1_Logic.Core.Main+<>c.<NetStartGame>b__50_0()
|
||||
Timer.Update()
|
||||
TH1_Logic.Core.Main.Update()
|
||||
```
|
||||
|
||||
源码落点:
|
||||
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Core/Main.cs:431`:联机开局注册 `Main_CenterMessage_Anim` 定时器。
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Core/Main.cs:434`:创建 `ShowUIAnnounceMajorEvent { EventType = StartGame }`。
|
||||
- `Unity/Assets/Scripts/TH1_Logic/Core/Main.cs:435`:`EventManager.Publish(announcement)`。
|
||||
- `Unity/Assets/Scripts/TH1_Core/Events/UIEventManagerBinder.cs:232`:处理 `ShowUIAnnounceMajorEvent`。
|
||||
- `Unity/Assets/Scripts/TH1_UI/Controller/Announce/UIAnnounceMajorEventController.cs:46`:读取打开参数。
|
||||
- `Unity/Assets/Scripts/TH1_UI/Controller/Announce/UIAnnounceMajorEventController.cs:51`:调用 `WindowScript.SetContent(...)`。
|
||||
- `Unity/Assets/Scripts/TH1_UI/View/Announce/UIAnnounceMajorEventView.cs:72`:进入 `StartGame` 分支。
|
||||
- `Unity/Assets/Scripts/TH1_UI/View/Announce/UIAnnounceMajorEventView.cs:76`:`player = Main.MapData.PlayerMap.SelfPlayerData;`。
|
||||
|
||||
同设备关键证据:
|
||||
|
||||
- 设备:`80-fa-5b-68-87-2b`。
|
||||
- 2026-06-12 15:02:25,同设备同版本先上报 `96f415d89f78f0ac31e19174e23246ba`:`OnGridInfoAction Error: Main.MapData is null`。
|
||||
- 2026-06-12 15:02:34,同设备上报本 blocking:`UIAnnounceMajorEventView.SetContent(StartGame)` 空引用。
|
||||
- `InputLogic.OnGridInfoAction()` 的保护代码在 `Unity/Assets/Scripts/TH1_Logic/Input/InputLogic.cs:407` 明确判断 `Main.MapData == null`,并在 `:409` 输出该错误。
|
||||
|
||||
明确结论:
|
||||
|
||||
- 这个 blocking 是项目代码问题:`StartGame` 重大事件公告打开时,`UIAnnounceMajorEventView.SetContent()` 在第 76 行无保护读取 `Main.MapData.PlayerMap.SelfPlayerData`。
|
||||
- 同设备 9 秒前已经明确记录 `Main.MapData is null`,所以本次空引用最强证据指向 `Main.MapData` 在公告定时器触发时仍为空或已经被清空。
|
||||
- 触发来源不是“UI 打开参数为空”,因为栈已经进入 `SetContent(StartGame)`;也不是 Title/Content/Image 为空,因为第 61 行已有保护并会返回。
|
||||
|
||||
## 需要分开处理的问题
|
||||
|
||||
- 多语言/YooAsset:当前批次有 9 个“多语言 ID 为空”logerror issue,25 次,21 设备,其中多条消息是 `[TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData`。这是明确的资源加载/打包问题,但它没有进入本次 blocking 列表。
|
||||
- UI/Renderer 空保护诊断:`OnGridInfoAction Error: Main.MapData is null` 是 logerror,不是 blocking;但它是 `fe24...` 同设备同会话的直接前置证据。
|
||||
- 第三方 UI/动画栈:TMP 和 Animancer blocking 的直接失败点很明确,但当前 CrashSight 缺少对象上下文,无法只靠这批数据确认具体业务页面。
|
||||
44
MD/CrashSight_2026-06-12_0.7.3f_blocking_root_1624/index.md
Normal file
44
MD/CrashSight_2026-06-12_0.7.3f_blocking_root_1624/index.md
Normal file
@ -0,0 +1,44 @@
|
||||
# CrashSight 0.7.3f 最近一天 ERROR 分析
|
||||
|
||||
- 捕获时间:2026-06-12 16:25:01
|
||||
- 筛选范围:`0.7.3f`,`last_1_day`,ERROR,未处理/处理中
|
||||
- CrashSight numFound:66
|
||||
- 去重 Issue:66
|
||||
- blocking:5 个 Issue,14 次
|
||||
- logerror:61 个 Issue,249 次
|
||||
- 原始数据:`Temp\CrashSight\Daily_2026-06-12_0.7.3f_blocking_root_1624`
|
||||
|
||||
## 阻断家族
|
||||
|
||||
| 家族 | Issue 数 | 次数 | 报告 |
|
||||
|---|---:|---:|---|
|
||||
| 空引用异常 | 4 | 13 | [blocking/001_null-reference.md](blocking/001_null-reference.md) |
|
||||
| 重大事件公告 UI 空引用 | 1 | 1 | [blocking/002_announce-major-event-null.md](blocking/002_announce-major-event-null.md) |
|
||||
|
||||
## 非阻断高频
|
||||
|
||||
| 类别 | Issue 数 | 次数 |
|
||||
|---|---:|---:|
|
||||
| P2P/大厅连接失败诊断 | 5 | 94 |
|
||||
| 其他项目诊断日志 | 10 | 67 |
|
||||
| 网络发送失败诊断 | 13 | 26 |
|
||||
| 多语言 ID 为空 | 9 | 25 |
|
||||
| AI 计算死循环保护 | 2 | 12 |
|
||||
| 断线重连/ForceUpdate 诊断 | 4 | 6 |
|
||||
| 结算卡住兜底诊断 | 5 | 5 |
|
||||
| STS/OSS 上传失败诊断 | 4 | 4 |
|
||||
| 行动执行玩家不一致 | 3 | 4 |
|
||||
| Origin Player 为空诊断 | 2 | 2 |
|
||||
| MapData 序列化差异诊断 | 1 | 1 |
|
||||
| UI/Renderer 空保护诊断 | 1 | 1 |
|
||||
|
||||
## 报告
|
||||
|
||||
- [LogError Summary](logerror_summary.md)
|
||||
- [空引用异常](blocking/001_null-reference.md)
|
||||
- [重大事件公告 UI 空引用](blocking/002_announce-major-event-null.md)
|
||||
|
||||
## 说明
|
||||
|
||||
blocking 的判定只认真实异常类型、异常对象或调用栈;纯 `LogSystem.LogError` 业务状态诊断归入 logerror。
|
||||
本次通过 CrashSight OpenAPI 抓取样本详情和同设备最近 ERROR 上报序列;若样本 `hasLogFile=false`,文档会明确标记上下文限制。
|
||||
@ -0,0 +1,91 @@
|
||||
# LogError Summary
|
||||
|
||||
- 筛选范围:`0.7.3f`,`last_1_day`,ERROR,status `0,2`
|
||||
- 捕获时间:2026-06-12 16:25:01
|
||||
- 非阻断 Issue:61
|
||||
- 非阻断次数:249
|
||||
|
||||
## 分类汇总
|
||||
|
||||
| 类别 | Issue 数 | 次数 | 设备数 | 代码位置 | 示例 Issue |
|
||||
|---|---:|---:|---:|---|---|
|
||||
| P2P/大厅连接失败诊断 | 5 | 94 | 33 | Unity/Assets/Scripts\TH1_Logic\Steam\SimpleP2P.cs:480: LogSystem.LogError($"Connection failed - Reason: {endReason}"); | 03e368c38bf498c0ede3d3d6b1a4ba9, 5bf29273f5c83382e8a559c3a51c64b1, 294ddb9ea1ed79f4f9685b30604d29d1 |
|
||||
| 其他项目诊断日志 | 10 | 67 | 35 | 未直接定位 | 3b1873b47fcdc15a0284798ea83be004, a406b4110acbc959eb184436ee2ab06e, 5fd467876966dade995de78f0f842730 |
|
||||
| 网络发送失败诊断 | 13 | 26 | 26 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1258: LogSystem.LogError($"ActionConfirm send failed, abort local execute: {ActionId.GetStringLog()}"); | c07d1e2a7c8d667e4dbc32f514816ce1, b85437ba5b78b111662ebae535a3d6ba, 16bd34f1b4756ad8655c843c0f9da506 |
|
||||
| 多语言 ID 为空 | 9 | 25 | 21 | Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:176: LogSystem.LogError($"多语言ID为空");<br>Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:200: LogSystem.LogError($"多语言ID为空"); | bae1cbeda505602c5dbbc984c0fa1d88, ed493d4b6926c3bb5efe569a5db211e3, 5506094b5e9df26bc4d5fd90349178cb |
|
||||
| AI 计算死循环保护 | 2 | 12 | 6 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:179: LogSystem.LogError($"死循环了,最终记录点为:{MainEditor.Instance.BTNodeId}");<br>Unity/Assets/Scripts\TH1_Logic\AI\AIActionBase.cs:528: LogSystem.LogError($"死循环了"); | 3e65a3369290cfa41e540f0612aefad5, b8f5e42d2f8416ec9ab5e4f260a83b24 |
|
||||
| 断线重连/ForceUpdate 诊断 | 4 | 6 | 6 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:418: public void SendRequestForceUpdate()<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:425: LogSystem.LogWarning($"客户端请求重连冷却中: SendRequestForceUpdate, remain={RequestForceUpdateCooldown - (now - _lastRequestForceUpdateTime):F1}s");<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:430: LogSystem.LogError($"客户端请求重连: SendRequestForceUpdate"); | 22fa9e63dc483a12cf3e1db26971c7fd, f5a10ac77528515d144e401c88fd4ae0, 29ea271af8759bbf7e679bf751ef6373 |
|
||||
| 结算卡住兜底诊断 | 5 | 5 | 5 | Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:328: MatchSettlementStuckGuard.CheckAndRecover(map, info, MatchSettlementType.Normal, kv.Key);<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:424: public static class MatchSettlementStuckGuard<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:484: sb.Append("[MatchSettlementStuck] 触发兜底:"); | 57b4823e12accd4cb391b375ca13b229, bf5719f6215aa6dda0ddcfa334e74300, 87f1839a648cac091754402cae2340f4 |
|
||||
| STS/OSS 上传失败诊断 | 4 | 4 | 4 | Unity/Assets/Scripts\TH1_Logic\Oss\OssManager.cs:127: LogSystem.LogError($"CollectData upload failed: {ex.Message}"); | 143216953927e092f92ed21f33dae263, ed572337a39c4463d494e47944835c78, 4b3f50847e230a1b123fc4d7b72cc3ce |
|
||||
| 行动执行玩家不一致 | 3 | 4 | 4 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1231: LogSystem.LogError($"CompleteExecute Player 不一致 {ActionId.GetStringLog()}"); | 0996632913829370bf06b088313d00e7, 217a8eace225fadbb28fe9c001b38d7c, acf75275ad92788914ce511f926df1ad |
|
||||
| Origin Player 为空诊断 | 2 | 2 | 2 | Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:683: LogSystem.LogError($"Origin Player is null target.id:{target.Id}");<br>Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:738: LogSystem.LogError($"RecoverHealth Origin Player is null target.id:{target.Id}"); | 606d395b63d62132c01a9f712605e0b0, 76c4a73c625af53a1601bc284e2e3013 |
|
||||
| MapData 序列化差异诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Data\MapData.cs:3028: differences.Add($"{name} differs (serialized data mismatch)"); | 0c1e9e04921cd04a78a5e3faf0eee5bc |
|
||||
| UI/Renderer 空保护诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:409: Debug.LogError("OnGridInfoAction Error: Main.MapData is null");<br>Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:416: Debug.LogError("OnGridInfoAction Error: Main.MapData.PlayerMap?.SelfPlayerData is null");<br>Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:427: Debug.LogError("OnGridInfoAction Error: UIManager.Instance?.UIInfoManager is null"); | 96f415d89f78f0ac31e19174e23246ba |
|
||||
| 相似 Action 重复诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:230: if(_sameCount > 5) LogSystem.LogError($"存在相似action ,记录点为:{MainEditor.Instance.BTNodeId} ," + | f1c119ee9f0c60b7f3a383def5491cd6 |
|
||||
| 行动同步版本/索引不一致 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetReceiver.cs:132: LogSystem.LogError($"OnReceivedActionConfirm Version 不一致"); | 2b00525760ae44917da30a3d1cff8fb9 |
|
||||
|
||||
## 明细
|
||||
|
||||
| Issue | 类别 | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---|---:|---:|---|---|
|
||||
| [5bf29273f5c83382e8a559c3a51c64b1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5bf29273f5c83382e8a559c3a51c64b1?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 58 | 10 | 2026-06-12 16:21:18 | 应用层拒绝连接 - 错误码: 1000,可能原因:1.对方未创建监听套接字 2.对方主动拒绝 3.对方游戏未运行 |
|
||||
| [3b1873b47fcdc15a0284798ea83be004](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3b1873b47fcdc15a0284798ea83be004?pid=10) | 其他项目诊断日志 | UnityLogError | 57 | 25 | 2026-06-12 16:24:00 | Releasing render texture that is set as Camera.targetTexture! |
|
||||
| [03e368c38bf498c0ede3d3d6b1a4ba9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/03e368c38bf498c0ede3d3d6b1a4ba9?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 29 | 18 | 2026-06-12 16:21:58 | Connection failed - Reason: 1000 |
|
||||
| [3e65a3369290cfa41e540f0612aefad5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3e65a3369290cfa41e540f0612aefad5?pid=10) | AI 计算死循环保护 | UnityLogError | 11 | 5 | 2026-06-12 16:06:13 | 死循环了 |
|
||||
| [16bd34f1b4756ad8655c843c0f9da506](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/16bd34f1b4756ad8655c843c0f9da506?pid=10) | 网络发送失败诊断 | UnityLogError | 5 | 5 | 2026-06-12 15:50:53 | MemberStateSyncMessage: 房主广播失败 |
|
||||
| [bae1cbeda505602c5dbbc984c0fa1d88](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bae1cbeda505602c5dbbc984c0fa1d88?pid=10) | 多语言 ID 为空 | UnityLogError | 5 | 5 | 2026-06-12 16:21:19 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [ed7645351344dd651c0a27dfc3573b10](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ed7645351344dd651c0a27dfc3573b10?pid=10) | 网络发送失败诊断 | UnityLogError | 5 | 5 | 2026-06-12 15:50:52 | P2P broadcast preflight failed: target=76561199261233300, reason=Target is not a lobby peer: 76561199261233300 |
|
||||
| [f5aa9c0a1411b1f09fd13146d745090d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f5aa9c0a1411b1f09fd13146d745090d?pid=10) | 多语言 ID 为空 | UnityLogError | 5 | 5 | 2026-06-12 16:11:35 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [294ddb9ea1ed79f4f9685b30604d29d1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/294ddb9ea1ed79f4f9685b30604d29d1?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 4 | 2 | 2026-06-12 16:18:36 | Failed to enter lobby: k_EChatRoomEnterResponseFull |
|
||||
| [b176950b03c8f954ad35f9520da10d23](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b176950b03c8f954ad35f9520da10d23?pid=10) | 多语言 ID 为空 | UnityLogError | 4 | 4 | 2026-06-12 15:54:43 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [ed493d4b6926c3bb5efe569a5db211e3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ed493d4b6926c3bb5efe569a5db211e3?pid=10) | 多语言 ID 为空 | UnityLogError | 4 | 1 | 2026-06-12 16:21:14 | 多语言ID为空 |
|
||||
| [442bf5a8e6242beea1cb0ce03556f614](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/442bf5a8e6242beea1cb0ce03556f614?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-12 15:34:41 | MemberStateSyncMessage: 房主广播失败 |
|
||||
| [ad4750c819ae6ea6a508646025d0eebe](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ad4750c819ae6ea6a508646025d0eebe?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-12 15:34:41 | P2P broadcast preflight failed: target=76561199261233300, reason=No connection to 76561199261233300 |
|
||||
| [217a8eace225fadbb28fe9c001b38d7c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/217a8eace225fadbb28fe9c001b38d7c?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-06-12 15:08:50 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : ThirdHero |
|
||||
| [22fa9e63dc483a12cf3e1db26971c7fd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/22fa9e63dc483a12cf3e1db26971c7fd?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 2 | 2 | 2026-06-12 16:16:22 | 触发断线重连, 触发原因: OK |
|
||||
| [26e2c7ab0fb8fdb0d95355ae254b4995](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/26e2c7ab0fb8fdb0d95355ae254b4995?pid=10) | 其他项目诊断日志 | UnityLogError | 2 | 2 | 2026-06-12 15:34:56 | |
|
||||
| [389b25b597dc2e0bba3e23df41e2c6b8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/389b25b597dc2e0bba3e23df41e2c6b8?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 2 | 2 | 2026-06-12 16:03:13 | 远程超时 - 目标用户网络问题 |
|
||||
| [519eac5f561dfb99ea775c5294065411](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/519eac5f561dfb99ea775c5294065411?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 2 | 2 | 2026-06-12 15:02:24 | 客户端请求重连: SendRequestForceUpdate |
|
||||
| [5506094b5e9df26bc4d5fd90349178cb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5506094b5e9df26bc4d5fd90349178cb?pid=10) | 多语言 ID 为空 | UnityLogError | 2 | 1 | 2026-06-12 16:21:14 | 多语言ID为空 |
|
||||
| [949458f51e04d6cf3f4ff9ee18b7e160](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/949458f51e04d6cf3f4ff9ee18b7e160?pid=10) | 多语言 ID 为空 | UnityLogError | 2 | 2 | 2026-06-12 12:42:44 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [ffb81e99d467263e9884a7aec3fcd845](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ffb81e99d467263e9884a7aec3fcd845?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-12 15:34:42 | MapConfirmMessage: 房主广播失败 |
|
||||
| [0996632913829370bf06b088313d00e7](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0996632913829370bf06b088313d00e7?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-12 16:17:03 | CompleteExecute Player 不一致 Action : TurnEnd Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : None |
|
||||
| [0c1e9e04921cd04a78a5e3faf0eee5bc](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0c1e9e04921cd04a78a5e3faf0eee5bc?pid=10) | MapData 序列化差异诊断 | UnityLogError | 1 | 1 | 2026-06-12 16:16:22 | PlayerMap differs (serialized data mismatch) PlayerMap.PlayerDataList differs (serialized data mismatch) UnitMap differs (serialized data mismatch) UnitToGridDict differs (serialized data mismatch) PlayerMap.PlayerDataList[0].PlayerScore: 5390 != 5400 PlayerMap.PlayerDataList[0].Sight.SightGidSet.Count: 121 != 123 UnitMap.UnitList[4].ActionPoint.Count: 1 !=… |
|
||||
| [115622af2c5f78d14b4e6b900ba1d151](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/115622af2c5f78d14b4e6b900ba1d151?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:25 | 多语言ID为空 |
|
||||
| [12dcc82a69446ab0f1cb4caf44b0579a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/12dcc82a69446ab0f1cb4caf44b0579a?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:25 | 多语言ID为空 |
|
||||
| [143216953927e092f92ed21f33dae263](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/143216953927e092f92ed21f33dae263?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 16:23:07 | STS request failed: Request timeout, Response: |
|
||||
| [1d0340f4a74af4a27367b74fdfca40e5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1d0340f4a74af4a27367b74fdfca40e5?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:37:44 | UpdateLobbyDataMessage: 发送给成员失败 memberId=76561199246777025 |
|
||||
| [1f51b04a2682e0031ec4b1bdc1e6ac48](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1f51b04a2682e0031ec4b1bdc1e6ac48?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:14:36 | CollectData upload failed: STS request failed: HTTP/1.1 403 Forbidden |
|
||||
| [29ea271af8759bbf7e679bf751ef6373](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/29ea271af8759bbf7e679bf751ef6373?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:02:25 | 触发断线重连, 触发原因: Disconnected |
|
||||
| [2b00525760ae44917da30a3d1cff8fb9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/2b00525760ae44917da30a3d1cff8fb9?pid=10) | 行动同步版本/索引不一致 | UnityLogError | 1 | 1 | 2026-06-12 16:16:20 | OnReceivedActionExcute MapHash 不一致,拒绝执行 |
|
||||
| [30622ad1a79c1111188744b6714fa6a4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/30622ad1a79c1111188744b6714fa6a4?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:30:45 | P2P broadcast preflight failed: target=76561198414473361, reason=Connection to 76561198414473361 is not active for queueing. State: k_ESteamNetworkingConnectionState_ClosedByPeer |
|
||||
| [3734a997ed6d691a08e092e56913c40a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3734a997ed6d691a08e092e56913c40a?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 10:32:02 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=634905386, ActionIndex=437, DataUnits=33, RenderUnits=34, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[436]: Version=436, MapHash=a2d84780acdfeabc1a2702f510a3ffa4 Action : Build Wonder : None Resource : Mine Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitA… |
|
||||
| [4b3f50847e230a1b123fc4d7b72cc3ce](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4b3f50847e230a1b123fc4d7b72cc3ce?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:14:36 | STS request failed: HTTP/1.1 403 Forbidden, Response: {"error":"Steam verification failed: Steam API 请求失败(重试 2 次): Steam API 请求超时(8000ms)"} |
|
||||
| [55f59da02d6a71a429d56dbe65e20f4f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/55f59da02d6a71a429d56dbe65e20f4f?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:30:47 | MemberStateSyncMessage: 房主广播失败 |
|
||||
| [57b4823e12accd4cb391b375ca13b229](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/57b4823e12accd4cb391b375ca13b229?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:03:31 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=325 Turn=28 NetMode=Single PlayerCount=17 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=28 CityCount=20 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsS… |
|
||||
| [5fd467876966dade995de78f0f842730](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5fd467876966dade995de78f0f842730?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 15:49:54 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=131154980, ActionIndex=3504, DataUnits=50, RenderUnits=51, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3503]: Version=3503, MapHash=10d52600eee9a090a6a724a41a6bf4a6 Action : UnitAttackAlly Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation … |
|
||||
| [606d395b63d62132c01a9f712605e0b0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/606d395b63d62132c01a9f712605e0b0?pid=10) | Origin Player 为空诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:56:22 | Origin Player is null target.id:1278 |
|
||||
| [7076e90b6a985d264771f26e77281aa6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7076e90b6a985d264771f26e77281aa6?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 15:42:08 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=131154980, ActionIndex=3048, DataUnits=50, RenderUnits=51, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3047]: Version=3047, MapHash=61a57aa2a6e9d87d426c30289da9c789 Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : No… |
|
||||
| [76c4a73c625af53a1601bc284e2e3013](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/76c4a73c625af53a1601bc284e2e3013?pid=10) | Origin Player 为空诊断 | UnityLogError | 1 | 1 | 2026-06-12 08:27:06 | Origin Player is null target.id:430 |
|
||||
| [775b456dd3864ee2fd0e480673d7c1c9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/775b456dd3864ee2fd0e480673d7c1c9?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:34:42 | P2P broadcast preflight failed: target=76561198446408112, reason=No connection to 76561198446408112 |
|
||||
| [7f6131dac5513c0d941c867c5fdda79b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7f6131dac5513c0d941c867c5fdda79b?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 16:07:44 | Failed to refresh lobby data before joining: 109775243702525678 |
|
||||
| [82d15ccd49201fabece20edd1853cdda](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/82d15ccd49201fabece20edd1853cdda?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 12:56:27 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=2294221302, ActionIndex=2800, DataUnits=75, RenderUnits=76, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[2799]: Version=2799, MapHash=808b4dc219c91b84ad23779b57fa27ce Action : UnitMove Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : Non… |
|
||||
| [87f1839a648cac091754402cae2340f4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/87f1839a648cac091754402cae2340f4?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:28:21 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=902 Turn=5 NetMode=Multi PlayerCount=2 Player Id=901 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=6 CityCount=3 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSuccess… |
|
||||
| [881c4ef7885f6fa88ed1f214352fb990](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/881c4ef7885f6fa88ed1f214352fb990?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 15:32:30 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=131154980, ActionIndex=2369, DataUnits=76, RenderUnits=77, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[2368]: Version=2368, MapHash=110ab1b166ccd6bacb1d56e8db6e8baa Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : No… |
|
||||
| [8d7cbe77207721b339ce20bf96d27652](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8d7cbe77207721b339ce20bf96d27652?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:37:44 | P2P message send failed: target=76561199246777025, reason=Target member is not in lobby: 76561199246777025 |
|
||||
| [96f415d89f78f0ac31e19174e23246ba](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/96f415d89f78f0ac31e19174e23246ba?pid=10) | UI/Renderer 空保护诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:02:25 | OnGridInfoAction Error: Main.MapData is null |
|
||||
| [a406b4110acbc959eb184436ee2ab06e](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a406b4110acbc959eb184436ee2ab06e?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 16:12:32 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=1508949800, ActionIndex=1434, DataUnits=67, RenderUnits=68, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[1433]: Version=1433, MapHash=15dd94fd28e78bea18d8cf314e6fa7ae Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : N… |
|
||||
| [a63d7c50108ffe49f2c02217f3d8eee8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a63d7c50108ffe49f2c02217f3d8eee8?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 10:32:00 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=634905386, ActionIndex=429, DataUnits=34, RenderUnits=35, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[428]: Version=428, MapHash=be3b9dab92fa24c2de8ac5f6baab80c1 Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None … |
|
||||
| [a92e5105a3a896fb74424242bfbddf0a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a92e5105a3a896fb74424242bfbddf0a?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:23:44 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=325 Turn=6 NetMode=Multi PlayerCount=2 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=6 CityCount=1 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucces… |
|
||||
| [acf75275ad92788914ce511f926df1ad](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/acf75275ad92788914ce511f926df1ad?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-12 12:39:18 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentForest |
|
||||
| [b36fb8882dd4aabcf8618737d0ec5a65](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b36fb8882dd4aabcf8618737d0ec5a65?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:24 | 多语言ID为空 |
|
||||
| [b85437ba5b78b111662ebae535a3d6ba](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b85437ba5b78b111662ebae535a3d6ba?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 16:21:58 | P2P message send failed: target=76561199198917637, reason=No connection to 76561199198917637 |
|
||||
| [b8f5e42d2f8416ec9ab5e4f260a83b24](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b8f5e42d2f8416ec9ab5e4f260a83b24?pid=10) | AI 计算死循环保护 | UnityLogError | 1 | 1 | 2026-06-12 13:35:32 | 死循环了,最终记录点为:194 |
|
||||
| [b9ef15d9ba6eda7d608a9816cef2f41b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b9ef15d9ba6eda7d608a9816cef2f41b?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:30:46 | P2P broadcast preflight failed: target=76561198414473361, reason=No connection to 76561198414473361 |
|
||||
| [bf5719f6215aa6dda0ddcfa334e74300](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bf5719f6215aa6dda0ddcfa334e74300?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:28:21 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=902 Turn=5 NetMode=Multi PlayerCount=2 Player Id=901 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=6 CityCount=3 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSuccess… |
|
||||
| [c07d1e2a7c8d667e4dbc32f514816ce1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/c07d1e2a7c8d667e4dbc32f514816ce1?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 16:21:59 | ChangeCivMessage: 发送给房主失败 |
|
||||
| [e0e8d47df59e68e38968a6d05ed1a882](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e0e8d47df59e68e38968a6d05ed1a882?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 07:48:53 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=2242826177, ActionIndex=3149, DataUnits=61, RenderUnits=62, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3148]: Version=3148, MapHash=0ceb6f1746ddba5ef68843f17bc7ad60 Action : UnitAttackAlly Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation… |
|
||||
| [e571d58f12740545f5a2756a546dc992](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e571d58f12740545f5a2756a546dc992?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:23:44 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=325 Turn=6 NetMode=Multi PlayerCount=2 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=6 CityCount=1 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucces… |
|
||||
| [ed572337a39c4463d494e47944835c78](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ed572337a39c4463d494e47944835c78?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 16:23:07 | CollectData upload failed: STS request failed: Request timeout |
|
||||
| [f1c119ee9f0c60b7f3a383def5491cd6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f1c119ee9f0c60b7f3a383def5491cd6?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-12 10:59:09 | 存在相似action ,记录点为:771 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : Trade PlayerAction : None AIParam : AllClear Tech : Trade CultureCardType : None 重复次数 :6 |
|
||||
| [f5a10ac77528515d144e401c88fd4ae0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f5a10ac77528515d144e401c88fd4ae0?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 1 | 1 | 2026-06-12 16:16:21 | 客户端请求重连: SendRequestForceUpdate |
|
||||
@ -0,0 +1,261 @@
|
||||
{
|
||||
"date": "2026-06-12",
|
||||
"version": "0.7.3f",
|
||||
"capture": {
|
||||
"capturedAtUtc": "2026-06-12T08:25:01+00:00",
|
||||
"capturedAtLocal": "2026-06-12 16:25:01",
|
||||
"rawDir": "Temp\\CrashSight\\Daily_2026-06-12_0.7.3f_blocking_root_1624",
|
||||
"reportDir": "MD\\CrashSight_2026-06-12_0.7.3f_blocking_root_1624"
|
||||
},
|
||||
"filter": {
|
||||
"version": "0.7.3f",
|
||||
"date": "last_1_day",
|
||||
"status": "0,2",
|
||||
"exceptionCategoryList": "ERROR",
|
||||
"sortField": "uploadTime",
|
||||
"sortOrder": "desc",
|
||||
"rows": 500
|
||||
},
|
||||
"totalIssues": 66,
|
||||
"blockingIssues": 5,
|
||||
"blockingOccurrences": 14,
|
||||
"logerrorIssues": 61,
|
||||
"logerrorOccurrences": 249,
|
||||
"blockingReports": [
|
||||
{
|
||||
"categoryId": "null-reference",
|
||||
"title": "空引用异常",
|
||||
"issueCount": 4,
|
||||
"occurrences": 13,
|
||||
"path": "blocking/001_null-reference.md",
|
||||
"issues": [
|
||||
"dc1340f866d020b4b560a92559c89a21",
|
||||
"0b41041d271c3ca1128d6f10e46b27b2",
|
||||
"be8ba33741c7c959e4bff388decf5877",
|
||||
"0c808432af82e7b66883205719dbb199"
|
||||
]
|
||||
},
|
||||
{
|
||||
"categoryId": "announce-major-event-null",
|
||||
"title": "重大事件公告 UI 空引用",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"path": "blocking/002_announce-major-event-null.md",
|
||||
"issues": [
|
||||
"fe24c7bf54531228f55d73530508a9fa"
|
||||
]
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
{
|
||||
"id": "p2p-lobby-connection-failure",
|
||||
"title": "P2P/大厅连接失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 5,
|
||||
"occurrences": 94,
|
||||
"issues": [
|
||||
"03e368c38bf498c0ede3d3d6b1a4ba9",
|
||||
"5bf29273f5c83382e8a559c3a51c64b1",
|
||||
"294ddb9ea1ed79f4f9685b30604d29d1",
|
||||
"7f6131dac5513c0d941c867c5fdda79b",
|
||||
"389b25b597dc2e0bba3e23df41e2c6b8"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "other-logerror",
|
||||
"title": "其他项目诊断日志",
|
||||
"class": "logerror",
|
||||
"issueCount": 10,
|
||||
"occurrences": 67,
|
||||
"issues": [
|
||||
"3b1873b47fcdc15a0284798ea83be004",
|
||||
"a406b4110acbc959eb184436ee2ab06e",
|
||||
"5fd467876966dade995de78f0f842730",
|
||||
"7076e90b6a985d264771f26e77281aa6",
|
||||
"26e2c7ab0fb8fdb0d95355ae254b4995",
|
||||
"881c4ef7885f6fa88ed1f214352fb990",
|
||||
"82d15ccd49201fabece20edd1853cdda",
|
||||
"3734a997ed6d691a08e092e56913c40a",
|
||||
"a63d7c50108ffe49f2c02217f3d8eee8",
|
||||
"e0e8d47df59e68e38968a6d05ed1a882"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "network-send-failure",
|
||||
"title": "网络发送失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 13,
|
||||
"occurrences": 26,
|
||||
"issues": [
|
||||
"c07d1e2a7c8d667e4dbc32f514816ce1",
|
||||
"b85437ba5b78b111662ebae535a3d6ba",
|
||||
"16bd34f1b4756ad8655c843c0f9da506",
|
||||
"ed7645351344dd651c0a27dfc3573b10",
|
||||
"1d0340f4a74af4a27367b74fdfca40e5",
|
||||
"8d7cbe77207721b339ce20bf96d27652",
|
||||
"775b456dd3864ee2fd0e480673d7c1c9",
|
||||
"ffb81e99d467263e9884a7aec3fcd845",
|
||||
"ad4750c819ae6ea6a508646025d0eebe",
|
||||
"442bf5a8e6242beea1cb0ce03556f614",
|
||||
"55f59da02d6a71a429d56dbe65e20f4f",
|
||||
"b9ef15d9ba6eda7d608a9816cef2f41b",
|
||||
"30622ad1a79c1111188744b6714fa6a4"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "multilingual-empty-id",
|
||||
"title": "多语言 ID 为空",
|
||||
"class": "logerror",
|
||||
"issueCount": 9,
|
||||
"occurrences": 25,
|
||||
"issues": [
|
||||
"bae1cbeda505602c5dbbc984c0fa1d88",
|
||||
"ed493d4b6926c3bb5efe569a5db211e3",
|
||||
"5506094b5e9df26bc4d5fd90349178cb",
|
||||
"f5aa9c0a1411b1f09fd13146d745090d",
|
||||
"b176950b03c8f954ad35f9520da10d23",
|
||||
"12dcc82a69446ab0f1cb4caf44b0579a",
|
||||
"115622af2c5f78d14b4e6b900ba1d151",
|
||||
"b36fb8882dd4aabcf8618737d0ec5a65",
|
||||
"949458f51e04d6cf3f4ff9ee18b7e160"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "null-reference",
|
||||
"title": "空引用异常",
|
||||
"class": "blocking",
|
||||
"issueCount": 4,
|
||||
"occurrences": 13,
|
||||
"issues": [
|
||||
"dc1340f866d020b4b560a92559c89a21",
|
||||
"0b41041d271c3ca1128d6f10e46b27b2",
|
||||
"be8ba33741c7c959e4bff388decf5877",
|
||||
"0c808432af82e7b66883205719dbb199"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ai-loop-guard",
|
||||
"title": "AI 计算死循环保护",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 12,
|
||||
"issues": [
|
||||
"3e65a3369290cfa41e540f0612aefad5",
|
||||
"b8f5e42d2f8416ec9ab5e4f260a83b24"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reconnect-forceupdate",
|
||||
"title": "断线重连/ForceUpdate 诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 4,
|
||||
"occurrences": 6,
|
||||
"issues": [
|
||||
"22fa9e63dc483a12cf3e1db26971c7fd",
|
||||
"f5a10ac77528515d144e401c88fd4ae0",
|
||||
"29ea271af8759bbf7e679bf751ef6373",
|
||||
"519eac5f561dfb99ea775c5294065411"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "match-settlement-stuck-fallback",
|
||||
"title": "结算卡住兜底诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 5,
|
||||
"occurrences": 5,
|
||||
"issues": [
|
||||
"57b4823e12accd4cb391b375ca13b229",
|
||||
"bf5719f6215aa6dda0ddcfa334e74300",
|
||||
"87f1839a648cac091754402cae2340f4",
|
||||
"e571d58f12740545f5a2756a546dc992",
|
||||
"a92e5105a3a896fb74424242bfbddf0a"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "sts-upload-failure",
|
||||
"title": "STS/OSS 上传失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 4,
|
||||
"occurrences": 4,
|
||||
"issues": [
|
||||
"143216953927e092f92ed21f33dae263",
|
||||
"ed572337a39c4463d494e47944835c78",
|
||||
"4b3f50847e230a1b123fc4d7b72cc3ce",
|
||||
"1f51b04a2682e0031ec4b1bdc1e6ac48"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "action-completeexecute-player-mismatch",
|
||||
"title": "行动执行玩家不一致",
|
||||
"class": "logerror",
|
||||
"issueCount": 3,
|
||||
"occurrences": 4,
|
||||
"issues": [
|
||||
"0996632913829370bf06b088313d00e7",
|
||||
"217a8eace225fadbb28fe9c001b38d7c",
|
||||
"acf75275ad92788914ce511f926df1ad"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "origin-player-null-diagnostic",
|
||||
"title": "Origin Player 为空诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 2,
|
||||
"issues": [
|
||||
"606d395b63d62132c01a9f712605e0b0",
|
||||
"76c4a73c625af53a1601bc284e2e3013"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "mapdata-diff-diagnostic",
|
||||
"title": "MapData 序列化差异诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"0c1e9e04921cd04a78a5e3faf0eee5bc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ui-renderer-null-guard",
|
||||
"title": "UI/Renderer 空保护诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"96f415d89f78f0ac31e19174e23246ba"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "duplicate-similar-action",
|
||||
"title": "相似 Action 重复诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"f1c119ee9f0c60b7f3a383def5491cd6"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "action-sync-version-index",
|
||||
"title": "行动同步版本/索引不一致",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"2b00525760ae44917da30a3d1cff8fb9"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "announce-major-event-null",
|
||||
"title": "重大事件公告 UI 空引用",
|
||||
"class": "blocking",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"fe24c7bf54531228f55d73530508a9fa"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,184 @@
|
||||
# 空引用异常
|
||||
|
||||
- 分类:blocking
|
||||
- Issue 数:4
|
||||
- `0.7.3f` 最近一天次数:13
|
||||
- 设备数合计:11
|
||||
- 报告生成:2026-06-12 16:08:34
|
||||
|
||||
## Issue
|
||||
|
||||
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---:|---:|---|---|
|
||||
| [dc1340f866d020b4b560a92559c89a21](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dc1340f866d020b4b560a92559c89a21?pid=10) | NullReferenceException | 6 | 4 | 2026-06-12 16:03:14 | Object reference not set to an instance of an object. |
|
||||
| [0b41041d271c3ca1128d6f10e46b27b2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0b41041d271c3ca1128d6f10e46b27b2?pid=10) | NullReferenceException | 3 | 3 | 2026-06-12 15:31:04 | Object reference not set to an instance of an object. |
|
||||
| [be8ba33741c7c959e4bff388decf5877](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/be8ba33741c7c959e4bff388decf5877?pid=10) | NullReferenceException | 3 | 3 | 2026-06-12 15:14:07 | Object reference not set to an instance of an object. |
|
||||
| [0c808432af82e7b66883205719dbb199](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0c808432af82e7b66883205719dbb199?pid=10) | NullReferenceException | 1 | 1 | 2026-06-12 12:42:42 | Object reference not set to an instance of an object. |
|
||||
|
||||
## 设备上下文
|
||||
|
||||
### dc1340f866d020b4b560a92559c89a21
|
||||
|
||||
- 样本 CrashId:`9d358b3dfdfd4f7190a195db17919deb`
|
||||
- 样本 DeviceId:`10-a5-1d-d7-c8-a9`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
```
|
||||
|
||||
同设备最近 ERROR 上报序列:
|
||||
|
||||
| 时间 | Issue | 类型 | 消息 |
|
||||
|---|---|---|---|
|
||||
| 2026-06-12 16:07:44 | 7f6131dac5513c0d941c867c5fdda79b | | |
|
||||
| 2026-06-12 16:05:50 | 294ddb9ea1ed79f4f9685b30604d29d1 | | |
|
||||
| 2026-06-12 16:05:20 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 16:03:14 | dc1340f866d020b4b560a92559c89a21 | | |
|
||||
| 2026-06-12 16:03:13 | 389b25b597dc2e0bba3e23df41e2c6b8 | | |
|
||||
| 2026-06-12 15:17:19 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
| 2026-06-12 15:17:19 | 0b41041d271c3ca1128d6f10e46b27b2 | | |
|
||||
| 2026-06-12 15:17:19 | dc1340f866d020b4b560a92559c89a21 | | |
|
||||
|
||||
### 0b41041d271c3ca1128d6f10e46b27b2
|
||||
|
||||
- 样本 CrashId:`5ad98ebcb8f44bc39580417051d745bb`
|
||||
- 样本 DeviceId:`00-ff-fb-5d-e8-e7`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
```
|
||||
|
||||
同设备最近 ERROR 上报序列:
|
||||
|
||||
| 时间 | Issue | 类型 | 消息 |
|
||||
|---|---|---|---|
|
||||
| 2026-06-12 16:00:01 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
| 2026-06-12 15:59:59 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 15:38:25 | 115622af2c5f78d14b4e6b900ba1d151 | | |
|
||||
| 2026-06-12 15:38:25 | 12dcc82a69446ab0f1cb4caf44b0579a | | |
|
||||
| 2026-06-12 15:38:24 | ed493d4b6926c3bb5efe569a5db211e3 | | |
|
||||
| 2026-06-12 15:38:24 | 5506094b5e9df26bc4d5fd90349178cb | | |
|
||||
| 2026-06-12 15:38:24 | b36fb8882dd4aabcf8618737d0ec5a65 | | |
|
||||
| 2026-06-12 15:31:20 | dc1340f866d020b4b560a92559c89a21 | | |
|
||||
|
||||
### be8ba33741c7c959e4bff388decf5877
|
||||
|
||||
- 样本 CrashId:`7cc68a71c55b4abbab7c7cdb370d6a46`
|
||||
- 样本 DeviceId:`d4-93-90-2e-72-b4`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
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 15:54:43 | b176950b03c8f954ad35f9520da10d23 | | |
|
||||
| 2026-06-12 15:54:43 | bae1cbeda505602c5dbbc984c0fa1d88 | | |
|
||||
| 2026-06-12 15:54:42 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
| 2026-06-12 15:14:07 | be8ba33741c7c959e4bff388decf5877 | | |
|
||||
| 2026-06-12 15:14:06 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
| 2026-06-12 15:10:32 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 15:05:27 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
| 2026-06-12 15:05:26 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
|
||||
## 代码位置
|
||||
|
||||
- 未通过固定文本直接定位;需要结合解码栈继续追。
|
||||
|
||||
## 判断
|
||||
|
||||
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
|
||||
本批样本 `hasLogFile=false`,API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
|
||||
|
||||
## 建议
|
||||
|
||||
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。
|
||||
@ -0,0 +1,75 @@
|
||||
# 重大事件公告 UI 空引用
|
||||
|
||||
- 分类:blocking
|
||||
- Issue 数:1
|
||||
- `0.7.3f` 最近一天次数:1
|
||||
- 设备数合计:1
|
||||
- 报告生成:2026-06-12 16:08:34
|
||||
|
||||
## Issue
|
||||
|
||||
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---:|---:|---|---|
|
||||
| [fe24c7bf54531228f55d73530508a9fa](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fe24c7bf54531228f55d73530508a9fa?pid=10) | UnityLogError | 1 | 1 | 2026-06-12 15:02:34 | EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object. at TH1_UI.View.Announce.UIAnnounceMajorEventView.SetContent (TH1_Core.Events.UIAnnounceMajorEventType eventType, System.Int32 param1, System.Int32 param2) [0x00000] in <00000000000000000000000000000000>:0 at TH… |
|
||||
|
||||
## 设备上下文
|
||||
|
||||
### fe24c7bf54531228f55d73530508a9fa
|
||||
|
||||
- 样本 CrashId:`18ce090edbf0448097312f6fd79db8d6`
|
||||
- 样本 DeviceId:`80-fa-5b-68-87-2b`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
UnityLogError
|
||||
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object.
|
||||
at TH1_UI.View.Announce.UIAnnounceMajorEventView.SetContent (TH1_Core.Events.UIAnnounceMajorEventType eventType, System.Int32 param1, System.Int32 param2) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Announce.UIAnnounceMajorEventController.OnOpen () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T]._TrueOpen () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T]._OnViewStart () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T]._TryOpen () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T].Open () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T].OpenWithParam (System.Object param) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Presentation.Sequencer.Task.UISequencerTask.Execute (System.Action onComplete) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Managers.PresentationManager.TryProcessNext () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Managers.PresentationManager.EnqueueTask (TH1_Presentation.Sequencer.Task.ISequencerTask task, System.Boolean viewNextFrame) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Events.UIEventManagerBinder.HandleShowUIAnnounceMajorEvent (TH1_Core.Events.ShowUIAnnounceMajorEvent evt) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Managers.EventManager.Publish[T] (T eventData) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Logic.Core.Main+<>c.<NetStartGame>b__50_0 () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at Timer.Update () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
|
||||
UnityEngine.Debug.LogError(Object)
|
||||
Logic.CrashSight.LogSystem.LogError(String, Object)
|
||||
TH1_Core.Managers.EventManager.Pub
|
||||
...
|
||||
```
|
||||
|
||||
同设备最近 ERROR 上报序列:
|
||||
|
||||
| 时间 | Issue | 类型 | 消息 |
|
||||
|---|---|---|---|
|
||||
| 2026-06-12 15:50:53 | 16bd34f1b4756ad8655c843c0f9da506 | | |
|
||||
| 2026-06-12 15:50:52 | ed7645351344dd651c0a27dfc3573b10 | | |
|
||||
| 2026-06-12 15:34:56 | 26e2c7ab0fb8fdb0d95355ae254b4995 | | |
|
||||
| 2026-06-12 15:34:41 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 15:02:34 | fe24c7bf54531228f55d73530508a9fa | | |
|
||||
| 2026-06-12 15:02:25 | 96f415d89f78f0ac31e19174e23246ba | | |
|
||||
| 2026-06-12 15:02:25 | 29ea271af8759bbf7e679bf751ef6373 | | |
|
||||
| 2026-06-12 15:02:24 | 519eac5f561dfb99ea775c5294065411 | | |
|
||||
|
||||
## 代码位置
|
||||
|
||||
- `Unity/Assets/Scripts\TH1_UI\Controller\Announce\UIAnnounceMajorEventController.cs:15: public class UIAnnounceMajorEventController : ViewController<UIAnnounceMajorEventView>, IEscClosable // 泛型参数是对应的View脚本`
|
||||
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:16: public class UIAnnounceMajorEventView : Base.View`
|
||||
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:63: LogSystem.LogError("UIAnnounceMajorEventView.SetContent(): Title or Content or Image or Image is null");`
|
||||
|
||||
## 判断
|
||||
|
||||
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
|
||||
本批样本 `hasLogFile=false`,API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
|
||||
|
||||
## 建议
|
||||
|
||||
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。
|
||||
44
MD/CrashSight_2026-06-12_0.7.3f_redecode_1608/index.md
Normal file
44
MD/CrashSight_2026-06-12_0.7.3f_redecode_1608/index.md
Normal file
@ -0,0 +1,44 @@
|
||||
# CrashSight 0.7.3f 最近一天 ERROR 分析
|
||||
|
||||
- 捕获时间:2026-06-12 16:08:34
|
||||
- 筛选范围:`0.7.3f`,`last_1_day`,ERROR,未处理/处理中
|
||||
- CrashSight numFound:57
|
||||
- 去重 Issue:57
|
||||
- blocking:5 个 Issue,14 次
|
||||
- logerror:52 个 Issue,210 次
|
||||
- 原始数据:`Temp\CrashSight\Daily_2026-06-12_0.7.3f_redecode_1608`
|
||||
|
||||
## 阻断家族
|
||||
|
||||
| 家族 | Issue 数 | 次数 | 报告 |
|
||||
|---|---:|---:|---|
|
||||
| 空引用异常 | 4 | 13 | [blocking/001_null-reference.md](blocking/001_null-reference.md) |
|
||||
| 重大事件公告 UI 空引用 | 1 | 1 | [blocking/002_announce-major-event-null.md](blocking/002_announce-major-event-null.md) |
|
||||
|
||||
## 非阻断高频
|
||||
|
||||
| 类别 | Issue 数 | 次数 |
|
||||
|---|---:|---:|
|
||||
| P2P/大厅连接失败诊断 | 5 | 77 |
|
||||
| 其他项目诊断日志 | 9 | 61 |
|
||||
| 网络发送失败诊断 | 11 | 24 |
|
||||
| 多语言 ID 为空 | 9 | 18 |
|
||||
| AI 计算死循环保护 | 2 | 12 |
|
||||
| 结算卡住兜底诊断 | 5 | 5 |
|
||||
| 断线重连/ForceUpdate 诊断 | 3 | 4 |
|
||||
| 行动执行玩家不一致 | 2 | 3 |
|
||||
| Origin Player 为空诊断 | 2 | 2 |
|
||||
| STS/OSS 上传失败诊断 | 2 | 2 |
|
||||
| UI/Renderer 空保护诊断 | 1 | 1 |
|
||||
| 相似 Action 重复诊断 | 1 | 1 |
|
||||
|
||||
## 报告
|
||||
|
||||
- [LogError Summary](logerror_summary.md)
|
||||
- [空引用异常](blocking/001_null-reference.md)
|
||||
- [重大事件公告 UI 空引用](blocking/002_announce-major-event-null.md)
|
||||
|
||||
## 说明
|
||||
|
||||
blocking 的判定只认真实异常类型、异常对象或调用栈;纯 `LogSystem.LogError` 业务状态诊断归入 logerror。
|
||||
本次通过 CrashSight OpenAPI 抓取样本详情和同设备最近 ERROR 上报序列;若样本 `hasLogFile=false`,文档会明确标记上下文限制。
|
||||
@ -0,0 +1,80 @@
|
||||
# LogError Summary
|
||||
|
||||
- 筛选范围:`0.7.3f`,`last_1_day`,ERROR,status `0,2`
|
||||
- 捕获时间:2026-06-12 16:08:34
|
||||
- 非阻断 Issue:52
|
||||
- 非阻断次数:210
|
||||
|
||||
## 分类汇总
|
||||
|
||||
| 类别 | Issue 数 | 次数 | 设备数 | 代码位置 | 示例 Issue |
|
||||
|---|---:|---:|---:|---|---|
|
||||
| P2P/大厅连接失败诊断 | 5 | 77 | 27 | Unity/Assets/Scripts\TH1_Logic\Steam\SimpleP2P.cs:480: LogSystem.LogError($"Connection failed - Reason: {endReason}"); | 7f6131dac5513c0d941c867c5fdda79b, 294ddb9ea1ed79f4f9685b30604d29d1, 03e368c38bf498c0ede3d3d6b1a4ba9 |
|
||||
| 其他项目诊断日志 | 9 | 61 | 33 | 未直接定位 | 3b1873b47fcdc15a0284798ea83be004, 5fd467876966dade995de78f0f842730, 7076e90b6a985d264771f26e77281aa6 |
|
||||
| 网络发送失败诊断 | 11 | 24 | 24 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1258: LogSystem.LogError($"ActionConfirm send failed, abort local execute: {ActionId.GetStringLog()}"); | 16bd34f1b4756ad8655c843c0f9da506, ed7645351344dd651c0a27dfc3573b10, 1d0340f4a74af4a27367b74fdfca40e5 |
|
||||
| 多语言 ID 为空 | 9 | 18 | 18 | Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:176: LogSystem.LogError($"多语言ID为空");<br>Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:200: LogSystem.LogError($"多语言ID为空"); | f5aa9c0a1411b1f09fd13146d745090d, b176950b03c8f954ad35f9520da10d23, bae1cbeda505602c5dbbc984c0fa1d88 |
|
||||
| AI 计算死循环保护 | 2 | 12 | 6 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:179: LogSystem.LogError($"死循环了,最终记录点为:{MainEditor.Instance.BTNodeId}");<br>Unity/Assets/Scripts\TH1_Logic\AI\AIActionBase.cs:528: LogSystem.LogError($"死循环了"); | 3e65a3369290cfa41e540f0612aefad5, b8f5e42d2f8416ec9ab5e4f260a83b24 |
|
||||
| 结算卡住兜底诊断 | 5 | 5 | 5 | Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:328: MatchSettlementStuckGuard.CheckAndRecover(map, info, MatchSettlementType.Normal, kv.Key);<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:424: public static class MatchSettlementStuckGuard<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:484: sb.Append("[MatchSettlementStuck] 触发兜底:"); | 57b4823e12accd4cb391b375ca13b229, bf5719f6215aa6dda0ddcfa334e74300, 87f1839a648cac091754402cae2340f4 |
|
||||
| 断线重连/ForceUpdate 诊断 | 3 | 4 | 4 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:418: public void SendRequestForceUpdate()<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:425: LogSystem.LogWarning($"客户端请求重连冷却中: SendRequestForceUpdate, remain={RequestForceUpdateCooldown - (now - _lastRequestForceUpdateTime):F1}s");<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:430: LogSystem.LogError($"客户端请求重连: SendRequestForceUpdate"); | 29ea271af8759bbf7e679bf751ef6373, 519eac5f561dfb99ea775c5294065411, 22fa9e63dc483a12cf3e1db26971c7fd |
|
||||
| 行动执行玩家不一致 | 2 | 3 | 3 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1231: LogSystem.LogError($"CompleteExecute Player 不一致 {ActionId.GetStringLog()}"); | 217a8eace225fadbb28fe9c001b38d7c, acf75275ad92788914ce511f926df1ad |
|
||||
| Origin Player 为空诊断 | 2 | 2 | 2 | Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:683: LogSystem.LogError($"Origin Player is null target.id:{target.Id}");<br>Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:738: LogSystem.LogError($"RecoverHealth Origin Player is null target.id:{target.Id}"); | 606d395b63d62132c01a9f712605e0b0, 76c4a73c625af53a1601bc284e2e3013 |
|
||||
| STS/OSS 上传失败诊断 | 2 | 2 | 2 | Unity/Assets/Scripts\TH1_Logic\Oss\OssManager.cs:127: LogSystem.LogError($"CollectData upload failed: {ex.Message}"); | 4b3f50847e230a1b123fc4d7b72cc3ce, 1f51b04a2682e0031ec4b1bdc1e6ac48 |
|
||||
| UI/Renderer 空保护诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:409: Debug.LogError("OnGridInfoAction Error: Main.MapData is null");<br>Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:416: Debug.LogError("OnGridInfoAction Error: Main.MapData.PlayerMap?.SelfPlayerData is null");<br>Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:427: Debug.LogError("OnGridInfoAction Error: UIManager.Instance?.UIInfoManager is null"); | 96f415d89f78f0ac31e19174e23246ba |
|
||||
| 相似 Action 重复诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:230: if(_sameCount > 5) LogSystem.LogError($"存在相似action ,记录点为:{MainEditor.Instance.BTNodeId} ," + | f1c119ee9f0c60b7f3a383def5491cd6 |
|
||||
|
||||
## 明细
|
||||
|
||||
| Issue | 类别 | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---|---:|---:|---|---|
|
||||
| [3b1873b47fcdc15a0284798ea83be004](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3b1873b47fcdc15a0284798ea83be004?pid=10) | 其他项目诊断日志 | UnityLogError | 52 | 24 | 2026-06-12 16:02:51 | Releasing render texture that is set as Camera.targetTexture! |
|
||||
| [5bf29273f5c83382e8a559c3a51c64b1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5bf29273f5c83382e8a559c3a51c64b1?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 48 | 7 | 2026-06-12 16:03:16 | 应用层拒绝连接 - 错误码: 1000,可能原因:1.对方未创建监听套接字 2.对方主动拒绝 3.对方游戏未运行 |
|
||||
| [03e368c38bf498c0ede3d3d6b1a4ba9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/03e368c38bf498c0ede3d3d6b1a4ba9?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 25 | 16 | 2026-06-12 16:05:20 | Connection failed - Reason: 1000 |
|
||||
| [3e65a3369290cfa41e540f0612aefad5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3e65a3369290cfa41e540f0612aefad5?pid=10) | AI 计算死循环保护 | UnityLogError | 11 | 5 | 2026-06-12 16:06:13 | 死循环了 |
|
||||
| [16bd34f1b4756ad8655c843c0f9da506](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/16bd34f1b4756ad8655c843c0f9da506?pid=10) | 网络发送失败诊断 | UnityLogError | 5 | 5 | 2026-06-12 15:50:53 | MemberStateSyncMessage: 房主广播失败 |
|
||||
| [ed7645351344dd651c0a27dfc3573b10](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ed7645351344dd651c0a27dfc3573b10?pid=10) | 网络发送失败诊断 | UnityLogError | 5 | 5 | 2026-06-12 15:50:52 | P2P broadcast preflight failed: target=76561199261233300, reason=Target is not a lobby peer: 76561199261233300 |
|
||||
| [b176950b03c8f954ad35f9520da10d23](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b176950b03c8f954ad35f9520da10d23?pid=10) | 多语言 ID 为空 | UnityLogError | 4 | 4 | 2026-06-12 15:54:43 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [f5aa9c0a1411b1f09fd13146d745090d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f5aa9c0a1411b1f09fd13146d745090d?pid=10) | 多语言 ID 为空 | UnityLogError | 4 | 4 | 2026-06-12 16:03:16 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [442bf5a8e6242beea1cb0ce03556f614](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/442bf5a8e6242beea1cb0ce03556f614?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-12 15:34:41 | MemberStateSyncMessage: 房主广播失败 |
|
||||
| [ad4750c819ae6ea6a508646025d0eebe](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ad4750c819ae6ea6a508646025d0eebe?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-12 15:34:41 | P2P broadcast preflight failed: target=76561199261233300, reason=No connection to 76561199261233300 |
|
||||
| [bae1cbeda505602c5dbbc984c0fa1d88](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bae1cbeda505602c5dbbc984c0fa1d88?pid=10) | 多语言 ID 为空 | UnityLogError | 3 | 3 | 2026-06-12 15:54:43 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [217a8eace225fadbb28fe9c001b38d7c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/217a8eace225fadbb28fe9c001b38d7c?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-06-12 15:08:50 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : ThirdHero |
|
||||
| [26e2c7ab0fb8fdb0d95355ae254b4995](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/26e2c7ab0fb8fdb0d95355ae254b4995?pid=10) | 其他项目诊断日志 | UnityLogError | 2 | 2 | 2026-06-12 15:34:56 | |
|
||||
| [389b25b597dc2e0bba3e23df41e2c6b8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/389b25b597dc2e0bba3e23df41e2c6b8?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 2 | 2 | 2026-06-12 16:03:13 | 远程超时 - 目标用户网络问题 |
|
||||
| [519eac5f561dfb99ea775c5294065411](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/519eac5f561dfb99ea775c5294065411?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 2 | 2 | 2026-06-12 15:02:24 | 客户端请求重连: SendRequestForceUpdate |
|
||||
| [949458f51e04d6cf3f4ff9ee18b7e160](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/949458f51e04d6cf3f4ff9ee18b7e160?pid=10) | 多语言 ID 为空 | UnityLogError | 2 | 2 | 2026-06-12 12:42:44 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [ffb81e99d467263e9884a7aec3fcd845](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ffb81e99d467263e9884a7aec3fcd845?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-12 15:34:42 | MapConfirmMessage: 房主广播失败 |
|
||||
| [115622af2c5f78d14b4e6b900ba1d151](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/115622af2c5f78d14b4e6b900ba1d151?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:25 | 多语言ID为空 |
|
||||
| [12dcc82a69446ab0f1cb4caf44b0579a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/12dcc82a69446ab0f1cb4caf44b0579a?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:25 | 多语言ID为空 |
|
||||
| [1d0340f4a74af4a27367b74fdfca40e5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1d0340f4a74af4a27367b74fdfca40e5?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:37:44 | UpdateLobbyDataMessage: 发送给成员失败 memberId=76561199246777025 |
|
||||
| [1f51b04a2682e0031ec4b1bdc1e6ac48](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1f51b04a2682e0031ec4b1bdc1e6ac48?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:14:36 | CollectData upload failed: STS request failed: HTTP/1.1 403 Forbidden |
|
||||
| [22fa9e63dc483a12cf3e1db26971c7fd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/22fa9e63dc483a12cf3e1db26971c7fd?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:26:19 | 触发断线重连, 触发原因: OK |
|
||||
| [294ddb9ea1ed79f4f9685b30604d29d1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/294ddb9ea1ed79f4f9685b30604d29d1?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 16:05:50 | Failed to enter lobby: k_EChatRoomEnterResponseFull |
|
||||
| [29ea271af8759bbf7e679bf751ef6373](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/29ea271af8759bbf7e679bf751ef6373?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:02:25 | 触发断线重连, 触发原因: Disconnected |
|
||||
| [30622ad1a79c1111188744b6714fa6a4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/30622ad1a79c1111188744b6714fa6a4?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:30:45 | P2P broadcast preflight failed: target=76561198414473361, reason=Connection to 76561198414473361 is not active for queueing. State: k_ESteamNetworkingConnectionState_ClosedByPeer |
|
||||
| [3734a997ed6d691a08e092e56913c40a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3734a997ed6d691a08e092e56913c40a?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 10:32:02 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=634905386, ActionIndex=437, DataUnits=33, RenderUnits=34, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[436]: Version=436, MapHash=a2d84780acdfeabc1a2702f510a3ffa4 Action : Build Wonder : None Resource : Mine Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitA… |
|
||||
| [4b3f50847e230a1b123fc4d7b72cc3ce](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4b3f50847e230a1b123fc4d7b72cc3ce?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:14:36 | STS request failed: HTTP/1.1 403 Forbidden, Response: {"error":"Steam verification failed: Steam API 请求失败(重试 2 次): Steam API 请求超时(8000ms)"} |
|
||||
| [5506094b5e9df26bc4d5fd90349178cb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5506094b5e9df26bc4d5fd90349178cb?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:24 | 多语言ID为空 |
|
||||
| [55f59da02d6a71a429d56dbe65e20f4f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/55f59da02d6a71a429d56dbe65e20f4f?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:30:47 | MemberStateSyncMessage: 房主广播失败 |
|
||||
| [57b4823e12accd4cb391b375ca13b229](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/57b4823e12accd4cb391b375ca13b229?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:03:31 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=325 Turn=28 NetMode=Single PlayerCount=17 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=28 CityCount=20 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsS… |
|
||||
| [5fd467876966dade995de78f0f842730](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5fd467876966dade995de78f0f842730?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 15:49:54 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=131154980, ActionIndex=3504, DataUnits=50, RenderUnits=51, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3503]: Version=3503, MapHash=10d52600eee9a090a6a724a41a6bf4a6 Action : UnitAttackAlly Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation … |
|
||||
| [606d395b63d62132c01a9f712605e0b0](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/606d395b63d62132c01a9f712605e0b0?pid=10) | Origin Player 为空诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:56:22 | Origin Player is null target.id:1278 |
|
||||
| [7076e90b6a985d264771f26e77281aa6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7076e90b6a985d264771f26e77281aa6?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 15:42:08 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=131154980, ActionIndex=3048, DataUnits=50, RenderUnits=51, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3047]: Version=3047, MapHash=61a57aa2a6e9d87d426c30289da9c789 Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : No… |
|
||||
| [76c4a73c625af53a1601bc284e2e3013](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/76c4a73c625af53a1601bc284e2e3013?pid=10) | Origin Player 为空诊断 | UnityLogError | 1 | 1 | 2026-06-12 08:27:06 | Origin Player is null target.id:430 |
|
||||
| [775b456dd3864ee2fd0e480673d7c1c9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/775b456dd3864ee2fd0e480673d7c1c9?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:34:42 | P2P broadcast preflight failed: target=76561198446408112, reason=No connection to 76561198446408112 |
|
||||
| [7f6131dac5513c0d941c867c5fdda79b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7f6131dac5513c0d941c867c5fdda79b?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 16:07:44 | Failed to refresh lobby data before joining: 109775243702525678 |
|
||||
| [82d15ccd49201fabece20edd1853cdda](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/82d15ccd49201fabece20edd1853cdda?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 12:56:27 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=2294221302, ActionIndex=2800, DataUnits=75, RenderUnits=76, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[2799]: Version=2799, MapHash=808b4dc219c91b84ad23779b57fa27ce Action : UnitMove Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : Non… |
|
||||
| [87f1839a648cac091754402cae2340f4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/87f1839a648cac091754402cae2340f4?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:28:21 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=902 Turn=5 NetMode=Multi PlayerCount=2 Player Id=901 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=6 CityCount=3 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSuccess… |
|
||||
| [881c4ef7885f6fa88ed1f214352fb990](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/881c4ef7885f6fa88ed1f214352fb990?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 15:32:30 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=131154980, ActionIndex=2369, DataUnits=76, RenderUnits=77, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[2368]: Version=2368, MapHash=110ab1b166ccd6bacb1d56e8db6e8baa Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : No… |
|
||||
| [8d7cbe77207721b339ce20bf96d27652](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8d7cbe77207721b339ce20bf96d27652?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:37:44 | P2P message send failed: target=76561199246777025, reason=Target member is not in lobby: 76561199246777025 |
|
||||
| [96f415d89f78f0ac31e19174e23246ba](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/96f415d89f78f0ac31e19174e23246ba?pid=10) | UI/Renderer 空保护诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:02:25 | OnGridInfoAction Error: Main.MapData is null |
|
||||
| [a63d7c50108ffe49f2c02217f3d8eee8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a63d7c50108ffe49f2c02217f3d8eee8?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 10:32:00 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=634905386, ActionIndex=429, DataUnits=34, RenderUnits=35, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[428]: Version=428, MapHash=be3b9dab92fa24c2de8ac5f6baab80c1 Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None … |
|
||||
| [a92e5105a3a896fb74424242bfbddf0a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a92e5105a3a896fb74424242bfbddf0a?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:23:44 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=325 Turn=6 NetMode=Multi PlayerCount=2 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=6 CityCount=1 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucces… |
|
||||
| [acf75275ad92788914ce511f926df1ad](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/acf75275ad92788914ce511f926df1ad?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-12 12:39:18 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentForest |
|
||||
| [b36fb8882dd4aabcf8618737d0ec5a65](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b36fb8882dd4aabcf8618737d0ec5a65?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:24 | 多语言ID为空 |
|
||||
| [b8f5e42d2f8416ec9ab5e4f260a83b24](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b8f5e42d2f8416ec9ab5e4f260a83b24?pid=10) | AI 计算死循环保护 | UnityLogError | 1 | 1 | 2026-06-12 13:35:32 | 死循环了,最终记录点为:194 |
|
||||
| [b9ef15d9ba6eda7d608a9816cef2f41b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b9ef15d9ba6eda7d608a9816cef2f41b?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:30:46 | P2P broadcast preflight failed: target=76561198414473361, reason=No connection to 76561198414473361 |
|
||||
| [bf5719f6215aa6dda0ddcfa334e74300](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bf5719f6215aa6dda0ddcfa334e74300?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:28:21 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=902 Turn=5 NetMode=Multi PlayerCount=2 Player Id=901 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=6 CityCount=3 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSuccess… |
|
||||
| [e0e8d47df59e68e38968a6d05ed1a882](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e0e8d47df59e68e38968a6d05ed1a882?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 07:48:53 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=2242826177, ActionIndex=3149, DataUnits=61, RenderUnits=62, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3148]: Version=3148, MapHash=0ceb6f1746ddba5ef68843f17bc7ad60 Action : UnitAttackAlly Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation… |
|
||||
| [e571d58f12740545f5a2756a546dc992](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e571d58f12740545f5a2756a546dc992?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:23:44 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=325 Turn=6 NetMode=Multi PlayerCount=2 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=6 CityCount=1 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucces… |
|
||||
| [ed493d4b6926c3bb5efe569a5db211e3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ed493d4b6926c3bb5efe569a5db211e3?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:24 | 多语言ID为空 |
|
||||
| [f1c119ee9f0c60b7f3a383def5491cd6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f1c119ee9f0c60b7f3a383def5491cd6?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-12 10:59:09 | 存在相似action ,记录点为:771 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : Trade PlayerAction : None AIParam : AllClear Tech : Trade CultureCardType : None 重复次数 :6 |
|
||||
@ -0,0 +1,234 @@
|
||||
{
|
||||
"date": "2026-06-12",
|
||||
"version": "0.7.3f",
|
||||
"capture": {
|
||||
"capturedAtUtc": "2026-06-12T08:08:34+00:00",
|
||||
"capturedAtLocal": "2026-06-12 16:08:34",
|
||||
"rawDir": "Temp\\CrashSight\\Daily_2026-06-12_0.7.3f_redecode_1608",
|
||||
"reportDir": "MD\\CrashSight_2026-06-12_0.7.3f_redecode_1608"
|
||||
},
|
||||
"filter": {
|
||||
"version": "0.7.3f",
|
||||
"date": "last_1_day",
|
||||
"status": "0,2",
|
||||
"exceptionCategoryList": "ERROR",
|
||||
"sortField": "uploadTime",
|
||||
"sortOrder": "desc",
|
||||
"rows": 500
|
||||
},
|
||||
"totalIssues": 57,
|
||||
"blockingIssues": 5,
|
||||
"blockingOccurrences": 14,
|
||||
"logerrorIssues": 52,
|
||||
"logerrorOccurrences": 210,
|
||||
"blockingReports": [
|
||||
{
|
||||
"categoryId": "null-reference",
|
||||
"title": "空引用异常",
|
||||
"issueCount": 4,
|
||||
"occurrences": 13,
|
||||
"path": "blocking/001_null-reference.md",
|
||||
"issues": [
|
||||
"dc1340f866d020b4b560a92559c89a21",
|
||||
"0b41041d271c3ca1128d6f10e46b27b2",
|
||||
"be8ba33741c7c959e4bff388decf5877",
|
||||
"0c808432af82e7b66883205719dbb199"
|
||||
]
|
||||
},
|
||||
{
|
||||
"categoryId": "announce-major-event-null",
|
||||
"title": "重大事件公告 UI 空引用",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"path": "blocking/002_announce-major-event-null.md",
|
||||
"issues": [
|
||||
"fe24c7bf54531228f55d73530508a9fa"
|
||||
]
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
{
|
||||
"id": "p2p-lobby-connection-failure",
|
||||
"title": "P2P/大厅连接失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 5,
|
||||
"occurrences": 77,
|
||||
"issues": [
|
||||
"7f6131dac5513c0d941c867c5fdda79b",
|
||||
"294ddb9ea1ed79f4f9685b30604d29d1",
|
||||
"03e368c38bf498c0ede3d3d6b1a4ba9",
|
||||
"5bf29273f5c83382e8a559c3a51c64b1",
|
||||
"389b25b597dc2e0bba3e23df41e2c6b8"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "other-logerror",
|
||||
"title": "其他项目诊断日志",
|
||||
"class": "logerror",
|
||||
"issueCount": 9,
|
||||
"occurrences": 61,
|
||||
"issues": [
|
||||
"3b1873b47fcdc15a0284798ea83be004",
|
||||
"5fd467876966dade995de78f0f842730",
|
||||
"7076e90b6a985d264771f26e77281aa6",
|
||||
"26e2c7ab0fb8fdb0d95355ae254b4995",
|
||||
"881c4ef7885f6fa88ed1f214352fb990",
|
||||
"82d15ccd49201fabece20edd1853cdda",
|
||||
"3734a997ed6d691a08e092e56913c40a",
|
||||
"a63d7c50108ffe49f2c02217f3d8eee8",
|
||||
"e0e8d47df59e68e38968a6d05ed1a882"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "network-send-failure",
|
||||
"title": "网络发送失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 11,
|
||||
"occurrences": 24,
|
||||
"issues": [
|
||||
"16bd34f1b4756ad8655c843c0f9da506",
|
||||
"ed7645351344dd651c0a27dfc3573b10",
|
||||
"1d0340f4a74af4a27367b74fdfca40e5",
|
||||
"8d7cbe77207721b339ce20bf96d27652",
|
||||
"775b456dd3864ee2fd0e480673d7c1c9",
|
||||
"ffb81e99d467263e9884a7aec3fcd845",
|
||||
"ad4750c819ae6ea6a508646025d0eebe",
|
||||
"442bf5a8e6242beea1cb0ce03556f614",
|
||||
"55f59da02d6a71a429d56dbe65e20f4f",
|
||||
"b9ef15d9ba6eda7d608a9816cef2f41b",
|
||||
"30622ad1a79c1111188744b6714fa6a4"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "multilingual-empty-id",
|
||||
"title": "多语言 ID 为空",
|
||||
"class": "logerror",
|
||||
"issueCount": 9,
|
||||
"occurrences": 18,
|
||||
"issues": [
|
||||
"f5aa9c0a1411b1f09fd13146d745090d",
|
||||
"b176950b03c8f954ad35f9520da10d23",
|
||||
"bae1cbeda505602c5dbbc984c0fa1d88",
|
||||
"12dcc82a69446ab0f1cb4caf44b0579a",
|
||||
"115622af2c5f78d14b4e6b900ba1d151",
|
||||
"b36fb8882dd4aabcf8618737d0ec5a65",
|
||||
"5506094b5e9df26bc4d5fd90349178cb",
|
||||
"ed493d4b6926c3bb5efe569a5db211e3",
|
||||
"949458f51e04d6cf3f4ff9ee18b7e160"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "null-reference",
|
||||
"title": "空引用异常",
|
||||
"class": "blocking",
|
||||
"issueCount": 4,
|
||||
"occurrences": 13,
|
||||
"issues": [
|
||||
"dc1340f866d020b4b560a92559c89a21",
|
||||
"0b41041d271c3ca1128d6f10e46b27b2",
|
||||
"be8ba33741c7c959e4bff388decf5877",
|
||||
"0c808432af82e7b66883205719dbb199"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ai-loop-guard",
|
||||
"title": "AI 计算死循环保护",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 12,
|
||||
"issues": [
|
||||
"3e65a3369290cfa41e540f0612aefad5",
|
||||
"b8f5e42d2f8416ec9ab5e4f260a83b24"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "match-settlement-stuck-fallback",
|
||||
"title": "结算卡住兜底诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 5,
|
||||
"occurrences": 5,
|
||||
"issues": [
|
||||
"57b4823e12accd4cb391b375ca13b229",
|
||||
"bf5719f6215aa6dda0ddcfa334e74300",
|
||||
"87f1839a648cac091754402cae2340f4",
|
||||
"e571d58f12740545f5a2756a546dc992",
|
||||
"a92e5105a3a896fb74424242bfbddf0a"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reconnect-forceupdate",
|
||||
"title": "断线重连/ForceUpdate 诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 3,
|
||||
"occurrences": 4,
|
||||
"issues": [
|
||||
"29ea271af8759bbf7e679bf751ef6373",
|
||||
"519eac5f561dfb99ea775c5294065411",
|
||||
"22fa9e63dc483a12cf3e1db26971c7fd"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "action-completeexecute-player-mismatch",
|
||||
"title": "行动执行玩家不一致",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 3,
|
||||
"issues": [
|
||||
"217a8eace225fadbb28fe9c001b38d7c",
|
||||
"acf75275ad92788914ce511f926df1ad"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "origin-player-null-diagnostic",
|
||||
"title": "Origin Player 为空诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 2,
|
||||
"issues": [
|
||||
"606d395b63d62132c01a9f712605e0b0",
|
||||
"76c4a73c625af53a1601bc284e2e3013"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "sts-upload-failure",
|
||||
"title": "STS/OSS 上传失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 2,
|
||||
"issues": [
|
||||
"4b3f50847e230a1b123fc4d7b72cc3ce",
|
||||
"1f51b04a2682e0031ec4b1bdc1e6ac48"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ui-renderer-null-guard",
|
||||
"title": "UI/Renderer 空保护诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"96f415d89f78f0ac31e19174e23246ba"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "duplicate-similar-action",
|
||||
"title": "相似 Action 重复诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"f1c119ee9f0c60b7f3a383def5491cd6"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "announce-major-event-null",
|
||||
"title": "重大事件公告 UI 空引用",
|
||||
"class": "blocking",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"fe24c7bf54531228f55d73530508a9fa"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
88
MD/CrashSight_2026-06-12_0.7.3f_refresh_1550/analysis.md
Normal file
88
MD/CrashSight_2026-06-12_0.7.3f_refresh_1550/analysis.md
Normal file
@ -0,0 +1,88 @@
|
||||
# 0.7.3f 下午补抓人工分析
|
||||
|
||||
- 抓取时间:2026-06-12 15:50:49
|
||||
- 范围:`0.7.3f`,`last_1_day`,ERROR,未处理/处理中
|
||||
- 早上:14 个 Issue,blocking 1 个 / 1 次,logerror 13 个 / 45 次
|
||||
- 下午:53 个 Issue,blocking 5 个 / 13 次,logerror 48 个 / 190 次
|
||||
- 差异:新增 39 个 Issue,早上 14 个 Issue 全部仍存在
|
||||
|
||||
## P0 / 必须先看
|
||||
|
||||
### 1. TMP 子网格禁用时空引用
|
||||
|
||||
- Issue:`dc1340f866d020b4b560a92559c89a21`、`0b41041d271c3ca1128d6f10e46b27b2`、`0c808432af82e7b66883205719dbb199`
|
||||
- 数量:9 次,设备数合计 8
|
||||
- 栈:`TMPro.TMP_SubMeshUI.UpdateMaterial -> SetMaterialDirty -> MaskableGraphic/Image.OnDisable`
|
||||
- 判断:崩溃发生在 UI 对象 disable/destroy 期间,TMP 子网格刷新材质时内部对象为空。`0c808...` 同设备同一秒还有多语言资源加载为空,说明至少与 UI 销毁/重建、多语言文本刷新处于同一批操作,但当前没有完整 Player.log,不能证明多语言 null 是直接原因。
|
||||
- 建议:优先排查带富文本/TMP 子网格的 UI 销毁、reparent、SetActive 流程;重点看 Wiki/公告/弹窗等含多语言文本且会批量销毁子节点的页面。
|
||||
|
||||
### 2. StartGame 重大事件公告 UI 空引用
|
||||
|
||||
- Issue:`fe24c7bf54531228f55d73530508a9fa`
|
||||
- 数量:1 次,设备数 1
|
||||
- 栈:`Main.NetStartGame -> EventManager.Publish<ShowUIAnnounceMajorEvent> -> UIAnnounceMajorEventController.OnOpen -> UIAnnounceMajorEventView.SetContent`
|
||||
- 判断:这是项目代码捕获到的真实 `System.NullReferenceException`。`SetContent` 已检查 `Title/Content/LeaderImage/WonderImage`,所以更可疑的是 StartGame 分支后续假设对象:`Main.MapData.PlayerMap.SelfPlayerData`、`GetPlayerInfo` 失败后的 `playerInfo`、`playerInfo` 字段、多语言、`AudioManager.Instance` 或 `ChatBubbleText`。
|
||||
- 建议:给 `UIAnnounceMajorEventView.SetContent(StartGame)` 补显式判空和上下文日志,至少记录 eventType、SelfPlayerData、GetPlayerInfo 结果、关键 UI 字段和 AudioManager 状态。
|
||||
|
||||
### 3. Animancer 禁用时 Stop 空引用
|
||||
|
||||
- Issue:`be8ba33741c7c959e4bff388decf5877`
|
||||
- 数量:3 次,设备数 3
|
||||
- 栈:`AnimancerState.get_NormalizedTime -> set_Time -> Stop -> AnimancerComponent.OnDisable`
|
||||
- 判断:早上已有 1 次,下午增长到 3 次。直接问题仍然是对象禁用时 Animancer `Stop()` 内部状态为空;没有证据指向 YooAsset。
|
||||
- 建议:排查带 Animancer 的 UI/角色对象在 disable/destroy 时是否存在空 Clip/State,必要时调整 `_ActionOnDisable` 或在销毁前主动清理状态。
|
||||
|
||||
## P1 / 高风险非阻断
|
||||
|
||||
### 4. 多语言资源加载为空
|
||||
|
||||
- Issue:`b176950b03c8f954ad35f9520da10d23`、`f5aa9c0a1411b1f09fd13146d745090d`、`949458f51e04d6cf3f4ff9ee18b7e160`、`bae1cbeda505602c5dbbc984c0fa1d88`
|
||||
- 数量:10 次,单个 issue 设备数 2-3
|
||||
- 日志:`[TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData`
|
||||
- 判断:这已经不是早上的单设备孤例。`ResourceLoader` 打出这条日志前已经通过 `CheckLocationValid`,所以不是路径不存在;失败点是 YooAsset handle 里取不到 `MultilingualData` 对象。结合 6 月 10 日资源转 AB、6 月 11 日多语言进 Hotfix,仍应按“AB/manifest/Hotfix 程序集组合不一致或本机包对象不可反序列化”处理。
|
||||
- 建议:发布侧强制全量重打 AB 与 Hotfix,同步校验 `PackageManifest`、`defaultpackage_assets_bundleresources_export` bundle、`TH1.Hotfix.dll` 一致性;运行时给 `Loaded null resource` 增加 handle status / LastError / package version / manifest version / hotfix version。
|
||||
|
||||
### 5. 多语言 ID 为空
|
||||
|
||||
- Issue:`12dcc82a69446ab0f1cb4caf44b0579a`、`115622af2c5f78d14b4e6b900ba1d151`、`b36fb8882dd4aabcf8618737d0ec5a65`、`5506094b5e9df26bc4d5fd90349178cb`、`ed493d4b6926c3bb5efe569a5db211e3`
|
||||
- 数量:5 次,设备数 5
|
||||
- 代码:`MultilingualManager.GetMultilingualTextSafe`
|
||||
- 判断:这是调用方传入空字符串或非法 ID,和资源加载为空不是同一个问题。它会造成局部文本缺失,但不等同于全局多语言资源加载失败。
|
||||
- 建议:下一步按 crash context 抓具体调用栈或加调用方上下文日志,记录传入 idString 和调用 UI。
|
||||
|
||||
### 6. P2P / 大厅连接失败与网络广播失败
|
||||
|
||||
- P2P 连接失败:2 个 Issue / 70 次 / 22 设备
|
||||
- 网络发送失败:11 个 Issue / 22 次 / 22 设备
|
||||
- 断线重连/ForceUpdate:3 个 Issue / 4 次 / 4 设备
|
||||
- 判断:主要集中在 `Connection failed - Reason: 1000`、应用层拒绝连接、目标不在 lobby、目标没有连接、房主广播失败。它们不是崩溃,但数量最高,说明联机连接状态与 lobby 成员状态之间仍有较大噪声。
|
||||
- 建议:把 `SimpleP2P` 的连接失败日志从 ERROR 降级或增加聚合限流,同时重点查 `SteamLobbyManager` 广播前成员列表与 SimpleP2P 连接表不同步的问题。
|
||||
|
||||
### 7. RenderTexture 正在作为 Camera.targetTexture 时被释放
|
||||
|
||||
- Issue:`3b1873b47fcdc15a0284798ea83be004`
|
||||
- 数量:46 次,22 设备
|
||||
- 日志:`Releasing render texture that is set as Camera.targetTexture!`
|
||||
- 判断:这是 Unity 引擎级 ERROR,通常表示释放 RenderTexture 前没有先从 Camera.targetTexture 解绑定。数量高但没有项目栈。
|
||||
- 建议:排查 UI 预览、头像、Wiki/Info 面板、RenderTexture 池化或场景相机目标纹理切换逻辑;释放前统一 `camera.targetTexture = null`。
|
||||
|
||||
### 8. AI 计算死循环保护
|
||||
|
||||
- Issue:`3e65a3369290cfa41e540f0612aefad5`、`b8f5e42d2f8416ec9ab5e4f260a83b24`
|
||||
- 数量:11 次,5 设备
|
||||
- 代码:`AILogic.StartAILogic`、`AIActionBase`
|
||||
- 判断:保护日志触发说明 AI 行为树或行动选择仍会进入重复节点/重复 action 场景;不是崩溃,但可能造成回合卡顿或 AI 行为异常。
|
||||
- 建议:保留 BTNodeId、重复 action、MapHash、PlayerId,按最高频节点复现。
|
||||
|
||||
### 9. 结算卡住兜底
|
||||
|
||||
- Issue:5 个 / 5 次 / 5 设备
|
||||
- 代码:`MatchSettlementStuckGuard.CheckAndRecover`
|
||||
- 判断:兜底生效代表真实存在 `PlayerSettlementGroup` 没有被翻成 `IsSettlement` 的场景,当前保护避免了卡死,但根因仍在结算状态流转。
|
||||
- 建议:优先看 `Normal` 结算、`AllSuccessOrFailure`、投降/死亡/胜利任务混合状态。
|
||||
|
||||
## P2 / 继续观察
|
||||
|
||||
- 行动执行玩家不一致:`BuyCultureCard` 两类,3 次 / 3 设备,需要看文化卡购买时 action param 的 PlayerId 与当前执行玩家。
|
||||
- STS/OSS 上传失败:2 次 / 2 设备,后端 Steam verification 超时或 403,影响收集数据上传。
|
||||
- UnitRendererMismatchBeforeAction:分散在多个单次 issue,说明数据层/渲染层单位数量仍会短暂不一致,当前是诊断日志,需和具体 action 合并分析。
|
||||
@ -0,0 +1,193 @@
|
||||
# 空引用异常
|
||||
|
||||
- 分类:blocking
|
||||
- Issue 数:4
|
||||
- `0.7.3f` 最近一天次数:12
|
||||
- 设备数合计:11
|
||||
- 报告生成:2026-06-12 15:50:49
|
||||
|
||||
## Issue
|
||||
|
||||
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---:|---:|---|---|
|
||||
| [dc1340f866d020b4b560a92559c89a21](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/dc1340f866d020b4b560a92559c89a21?pid=10) | NullReferenceException | 5 | 4 | 2026-06-12 15:31:20 | Object reference not set to an instance of an object. |
|
||||
| [0b41041d271c3ca1128d6f10e46b27b2](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0b41041d271c3ca1128d6f10e46b27b2?pid=10) | NullReferenceException | 3 | 3 | 2026-06-12 15:31:04 | Object reference not set to an instance of an object. |
|
||||
| [be8ba33741c7c959e4bff388decf5877](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/be8ba33741c7c959e4bff388decf5877?pid=10) | NullReferenceException | 3 | 3 | 2026-06-12 15:14:07 | Object reference not set to an instance of an object. |
|
||||
| [0c808432af82e7b66883205719dbb199](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/0c808432af82e7b66883205719dbb199?pid=10) | NullReferenceException | 1 | 1 | 2026-06-12 12:42:42 | Object reference not set to an instance of an object. |
|
||||
|
||||
## 设备上下文
|
||||
|
||||
### dc1340f866d020b4b560a92559c89a21
|
||||
|
||||
- 样本 CrashId:`d034b91bdf6d4bd38179a5468c277dd4`
|
||||
- 样本 DeviceId:`00-ff-fb-5d-e8-e7`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
```
|
||||
|
||||
同设备最近 ERROR 上报序列:
|
||||
|
||||
| 时间 | Issue | 类型 | 消息 |
|
||||
|---|---|---|---|
|
||||
| 2026-06-12 15:38:25 | 115622af2c5f78d14b4e6b900ba1d151 | | |
|
||||
| 2026-06-12 15:38:25 | 12dcc82a69446ab0f1cb4caf44b0579a | | |
|
||||
| 2026-06-12 15:38:24 | ed493d4b6926c3bb5efe569a5db211e3 | | |
|
||||
| 2026-06-12 15:38:24 | 5506094b5e9df26bc4d5fd90349178cb | | |
|
||||
| 2026-06-12 15:38:24 | b36fb8882dd4aabcf8618737d0ec5a65 | | |
|
||||
| 2026-06-12 15:31:20 | dc1340f866d020b4b560a92559c89a21 | | |
|
||||
| 2026-06-12 15:31:20 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
| 2026-06-12 15:31:04 | dc1340f866d020b4b560a92559c89a21 | | |
|
||||
|
||||
### 0b41041d271c3ca1128d6f10e46b27b2
|
||||
|
||||
- 样本 CrashId:`5ad98ebcb8f44bc39580417051d745bb`
|
||||
- 样本 DeviceId:`00-ff-fb-5d-e8-e7`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
|
||||
NullReferenceException
|
||||
Object reference not set to an instance of an object.
|
||||
TMPro.TMP_SubMeshUI.UpdateMaterial () (at <00000000000000000000000000000000>.0)
|
||||
TMPro.TMP_SubMeshUI.SetMaterialDirty () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskUtilities.NotifyStencilStateChanged (UnityEngine.Component mask) (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.MaskableGraphic.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
UnityEngine.UI.Image.OnDisable () (at <00000000000000000000000000000000>.0)
|
||||
```
|
||||
|
||||
同设备最近 ERROR 上报序列:
|
||||
|
||||
| 时间 | Issue | 类型 | 消息 |
|
||||
|---|---|---|---|
|
||||
| 2026-06-12 15:38:25 | 115622af2c5f78d14b4e6b900ba1d151 | | |
|
||||
| 2026-06-12 15:38:25 | 12dcc82a69446ab0f1cb4caf44b0579a | | |
|
||||
| 2026-06-12 15:38:24 | ed493d4b6926c3bb5efe569a5db211e3 | | |
|
||||
| 2026-06-12 15:38:24 | 5506094b5e9df26bc4d5fd90349178cb | | |
|
||||
| 2026-06-12 15:38:24 | b36fb8882dd4aabcf8618737d0ec5a65 | | |
|
||||
| 2026-06-12 15:31:20 | dc1340f866d020b4b560a92559c89a21 | | |
|
||||
| 2026-06-12 15:31:20 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
| 2026-06-12 15:31:04 | dc1340f866d020b4b560a92559c89a21 | | |
|
||||
|
||||
### be8ba33741c7c959e4bff388decf5877
|
||||
|
||||
- 样本 CrashId:`7cc68a71c55b4abbab7c7cdb370d6a46`
|
||||
- 样本 DeviceId:`d4-93-90-2e-72-b4`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
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 15:14:07 | be8ba33741c7c959e4bff388decf5877 | | |
|
||||
| 2026-06-12 15:14:06 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
| 2026-06-12 15:10:32 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 15:05:27 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
| 2026-06-12 15:05:26 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
| 2026-06-12 14:23:04 | 3b1873b47fcdc15a0284798ea83be004 | | |
|
||||
| 2026-06-12 14:05:08 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 13:57:01 | 5bf29273f5c83382e8a559c3a51c64b1 | | |
|
||||
|
||||
## 代码位置
|
||||
|
||||
- 未通过固定文本直接定位;需要结合解码栈继续追。
|
||||
|
||||
## 解码结论
|
||||
|
||||
反混淆命中 `0`,这些栈不是业务混淆名,而是 Unity/TMP/Animancer 的明文运行时栈。这个报告里的 4 个 Issue 不能当成同一个根因处理:
|
||||
|
||||
- `dc1340f866d020b4b560a92559c89a21`、`0b41041d271c3ca1128d6f10e46b27b2`、`0c808432af82e7b66883205719dbb199`:共同栈顶是 `TMPro.TMP_SubMeshUI.UpdateMaterial -> SetMaterialDirty -> MaskableGraphic/Image.OnDisable`,说明崩在 UI 对象禁用/销毁期间,TMP 子网格刷新材质时内部对象为空。`0c808...` 同设备同一秒还出现多语言资源加载为空,说明这条至少和 UI 销毁/重建、多语言文本刷新处在同一批操作里;但样本没有完整 Player.log,不能证明多语言 null 是 TMP NRE 的直接原因。
|
||||
- `be8ba33741c7c959e4bff388decf5877`:共同栈顶是 `AnimancerState.get_NormalizedTime -> Stop -> AnimancerComponent.OnDisable`,和 TMP 无关;这是动画组件禁用时 `Stop()` 过程中空引用,仍然更像 UI/GameObject disable 触发的第三方组件生命周期问题。
|
||||
|
||||
因此建议拆成两个修复方向:一是排查含 TMP 子网格的 UI 销毁/禁用流程,尤其是同设备伴随多语言加载失败的页面;二是单独排查带 Animancer 的对象在禁用时是否有空 Clip/State 或销毁顺序问题。
|
||||
|
||||
## 判断
|
||||
|
||||
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
|
||||
本批样本 `hasLogFile=false`,API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
|
||||
|
||||
## 建议
|
||||
|
||||
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。
|
||||
@ -0,0 +1,83 @@
|
||||
# 重大事件公告 UI 空引用
|
||||
|
||||
- 分类:blocking
|
||||
- Issue 数:1
|
||||
- `0.7.3f` 最近一天次数:1
|
||||
- 设备数合计:1
|
||||
- 报告生成:2026-06-12 15:50:49
|
||||
|
||||
## Issue
|
||||
|
||||
| Issue | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---:|---:|---|---|
|
||||
| [fe24c7bf54531228f55d73530508a9fa](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/fe24c7bf54531228f55d73530508a9fa?pid=10) | UnityLogError | 1 | 1 | 2026-06-12 15:02:34 | EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object. at TH1_UI.View.Announce.UIAnnounceMajorEventView.SetContent (TH1_Core.Events.UIAnnounceMajorEventType eventType, System.Int32 param1, System.Int32 param2) [0x00000] in <00000000000000000000000000000000>:0 at TH… |
|
||||
|
||||
## 设备上下文
|
||||
|
||||
### fe24c7bf54531228f55d73530508a9fa
|
||||
|
||||
- 样本 CrashId:`18ce090edbf0448097312f6fd79db8d6`
|
||||
- 样本 DeviceId:`80-fa-5b-68-87-2b`
|
||||
- CrashSight 附带日志文件:`False`
|
||||
|
||||
最终上报内容:
|
||||
|
||||
```text
|
||||
UnityLogError
|
||||
EventManager Publish<ShowUIAnnounceMajorEvent> listener failed: System.NullReferenceException: Object reference not set to an instance of an object.
|
||||
at TH1_UI.View.Announce.UIAnnounceMajorEventView.SetContent (TH1_Core.Events.UIAnnounceMajorEventType eventType, System.Int32 param1, System.Int32 param2) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Announce.UIAnnounceMajorEventController.OnOpen () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T]._TrueOpen () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T]._OnViewStart () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T]._TryOpen () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T].Open () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_UI.Controller.Base.ViewController`1[T].OpenWithParam (System.Object param) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Presentation.Sequencer.Task.UISequencerTask.Execute (System.Action onComplete) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Managers.PresentationManager.TryProcessNext () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Managers.PresentationManager.EnqueueTask (TH1_Presentation.Sequencer.Task.ISequencerTask task, System.Boolean viewNextFrame) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Events.UIEventManagerBinder.HandleShowUIAnnounceMajorEvent (TH1_Core.Events.ShowUIAnnounceMajorEvent evt) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Core.Managers.EventManager.Publish[T] (T eventData) [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Logic.Core.Main+<>c.<NetStartGame>b__50_0 () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at Timer.Update () [0x00000] in <00000000000000000000000000000000>:0
|
||||
at TH1_Logic.Core.Main.Update () [0x00000] in <00000000000000000000000000000000>:0
|
||||
UnityEngine.Debug.LogError(Object)
|
||||
Logic.CrashSight.LogSystem.LogError(String, Object)
|
||||
TH1_Core.Managers.EventManager.Pub
|
||||
...
|
||||
```
|
||||
|
||||
同设备最近 ERROR 上报序列:
|
||||
|
||||
| 时间 | Issue | 类型 | 消息 |
|
||||
|---|---|---|---|
|
||||
| 2026-06-12 15:50:53 | 16bd34f1b4756ad8655c843c0f9da506 | | |
|
||||
| 2026-06-12 15:50:52 | ed7645351344dd651c0a27dfc3573b10 | | |
|
||||
| 2026-06-12 15:34:56 | 26e2c7ab0fb8fdb0d95355ae254b4995 | | |
|
||||
| 2026-06-12 15:34:41 | 03e368c38bf498c0ede3d3d6b1a4ba9 | | |
|
||||
| 2026-06-12 15:02:34 | fe24c7bf54531228f55d73530508a9fa | | |
|
||||
| 2026-06-12 15:02:25 | 96f415d89f78f0ac31e19174e23246ba | | |
|
||||
| 2026-06-12 15:02:25 | 29ea271af8759bbf7e679bf751ef6373 | | |
|
||||
| 2026-06-12 15:02:24 | 519eac5f561dfb99ea775c5294065411 | | |
|
||||
|
||||
## 代码位置
|
||||
|
||||
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:16: public class UIAnnounceMajorEventView : Base.View`
|
||||
- `Unity/Assets/Scripts\TH1_UI\View\Announce\UIAnnounceMajorEventView.cs:63: LogSystem.LogError("UIAnnounceMajorEventView.SetContent(): Title or Content or Image or Image is null");`
|
||||
- `Unity/Assets/Scripts\TH1_UI\Controller\Announce\UIAnnounceMajorEventController.cs:15: public class UIAnnounceMajorEventController : ViewController<UIAnnounceMajorEventView>, IEscClosable // 泛型参数是对应的View脚本`
|
||||
|
||||
## 解码结论
|
||||
|
||||
这条不是普通项目诊断,而是 `EventManager.Publish<ShowUIAnnounceMajorEvent>` 捕获到的真实 `System.NullReferenceException`。调用链清楚:`Main.NetStartGame` 在开局后 1.5 秒发布 `ShowUIAnnounceMajorEvent(StartGame)`,`UIEventManagerBinder` 把它排进 `PresentationManager`,`UIAnnounceMajorEventController.OnOpen` 调 `UIAnnounceMajorEventView.SetContent`,随后在 `SetContent` 内空引用。
|
||||
|
||||
可疑点集中在 `StartGame` 分支:`SetContent` 先检查了 `Title/Content/LeaderImage/WonderImage`,如果这些字段为空会提前 `return`,所以实际 NRE 更可能发生在后续对象假设上,例如 `Main.MapData.PlayerMap.SelfPlayerData`、`Table.Instance.PlayerDataAssets.GetPlayerInfo` 未成功但仍使用 `playerInfo`、`playerInfo.LeaderName/CivName/MusicName/LeaderAvatar`、`AudioManager.Instance` 或 `ChatBubbleText`。当前 CrashSight 没有行号和完整 Player.log,无法在这些候选里再缩小到唯一字段。
|
||||
|
||||
建议给 `StartGame` 分支补显式判空和带上下文日志:eventType、param、MapData 是否为空、SelfPlayerData id、GetPlayerInfo 是否成功、Title/Content/LeaderImage/WonderImage/ChatBubbleText/AudioManager 是否为空。这个位置会影响联机开局公告,优先级高于普通 LogError。
|
||||
|
||||
## 判断
|
||||
|
||||
这是阻断类,因为 CrashSight 行或 LogError 包装内容中存在真实异常类型、异常对象或调用栈;不是单纯业务状态诊断。
|
||||
本批样本 `hasLogFile=false`,API 能拿到的是最终上报内容和同设备 ERROR 上报序列,不包含完整 Unity 运行日志;根因上下文按可见上报链路记录。
|
||||
|
||||
## 建议
|
||||
|
||||
优先按次数最高的 Issue 样本复现并修复;若同设备上报序列中出现更早的异常,应以更早异常作为源头处理。
|
||||
53
MD/CrashSight_2026-06-12_0.7.3f_refresh_1550/index.md
Normal file
53
MD/CrashSight_2026-06-12_0.7.3f_refresh_1550/index.md
Normal file
@ -0,0 +1,53 @@
|
||||
# CrashSight 0.7.3f 最近一天 ERROR 分析
|
||||
|
||||
- 捕获时间:2026-06-12 15:50:49
|
||||
- 筛选范围:`0.7.3f`,`last_1_day`,ERROR,未处理/处理中
|
||||
- CrashSight numFound:53
|
||||
- 去重 Issue:53
|
||||
- blocking:5 个 Issue,13 次
|
||||
- logerror:48 个 Issue,190 次
|
||||
- 原始数据:`Temp\CrashSight\Daily_2026-06-12_0.7.3f_refresh_1550`
|
||||
|
||||
## 阻断家族
|
||||
|
||||
| 家族 | Issue 数 | 次数 | 报告 |
|
||||
|---|---:|---:|---|
|
||||
| 空引用异常 | 4 | 12 | [blocking/001_null-reference.md](blocking/001_null-reference.md) |
|
||||
| 重大事件公告 UI 空引用 | 1 | 1 | [blocking/002_announce-major-event-null.md](blocking/002_announce-major-event-null.md) |
|
||||
|
||||
## 非阻断高频
|
||||
|
||||
| 类别 | Issue 数 | 次数 |
|
||||
|---|---:|---:|
|
||||
| P2P/大厅连接失败诊断 | 2 | 70 |
|
||||
| 其他项目诊断日志 | 9 | 55 |
|
||||
| 网络发送失败诊断 | 11 | 22 |
|
||||
| 多语言资源加载为空 / 多语言 ID 为空 | 9 | 15 |
|
||||
| AI 计算死循环保护 | 2 | 11 |
|
||||
| 结算卡住兜底诊断 | 5 | 5 |
|
||||
| 断线重连/ForceUpdate 诊断 | 3 | 4 |
|
||||
| 行动执行玩家不一致 | 2 | 3 |
|
||||
| STS/OSS 上传失败诊断 | 2 | 2 |
|
||||
| Origin Player 为空诊断 | 1 | 1 |
|
||||
| UI/Renderer 空保护诊断 | 1 | 1 |
|
||||
| 相似 Action 重复诊断 | 1 | 1 |
|
||||
|
||||
## 报告
|
||||
|
||||
- [LogError Summary](logerror_summary.md)
|
||||
- [人工分析](analysis.md)
|
||||
- [空引用异常](blocking/001_null-reference.md)
|
||||
- [重大事件公告 UI 空引用](blocking/002_announce-major-event-null.md)
|
||||
|
||||
## 人工复核要点
|
||||
|
||||
- 下午重新抓取后,早上 14 个 Issue 全部仍存在,新增 39 个 Issue;主要增量来自 P2P/大厅连接失败、网络广播失败、TMP 子网格禁用时空引用、结算卡住兜底和多语言相关日志。
|
||||
- `空引用异常` 不是一个根因:其中 `dc1340...`、`0b410...`、`0c808...` 是 `TMPro.TMP_SubMeshUI` 在 UI 禁用/Mask 状态刷新时空引用;`be8ba...` 是 `AnimancerComponent.OnDisable -> Stop` 链路空引用。
|
||||
- `重大事件公告 UI 空引用` 是项目代码捕获到的真实异常:`NetStartGame` 延迟发布 `ShowUIAnnounceMajorEvent(StartGame)`,UI 打开后在 `UIAnnounceMajorEventView.SetContent` 内 NRE。
|
||||
- 多语言相关日志被自动分类合并到同一类,但里面有两种不同问题:`[TH1.YooAsset] Loaded null resource: ... MultilingualData` 是资源对象加载为空;`多语言ID为空` 是调用方传入空/非法 ID。
|
||||
- 本批 blocking 样本均 `hasLogFile=false`,API 只能看到最终上报栈和同设备 ERROR 序列,无法看到完整 Player.log 中更早的 Unity/YooAsset/TMP 内部错误。
|
||||
|
||||
## 说明
|
||||
|
||||
blocking 的判定只认真实异常类型、异常对象或调用栈;纯 `LogSystem.LogError` 业务状态诊断归入 logerror。
|
||||
本次通过 CrashSight OpenAPI 抓取样本详情和同设备最近 ERROR 上报序列;若样本 `hasLogFile=false`,文档会明确标记上下文限制。
|
||||
@ -0,0 +1,76 @@
|
||||
# LogError Summary
|
||||
|
||||
- 筛选范围:`0.7.3f`,`last_1_day`,ERROR,status `0,2`
|
||||
- 捕获时间:2026-06-12 15:50:49
|
||||
- 非阻断 Issue:48
|
||||
- 非阻断次数:190
|
||||
|
||||
## 分类汇总
|
||||
|
||||
| 类别 | Issue 数 | 次数 | 设备数 | 代码位置 | 示例 Issue |
|
||||
|---|---:|---:|---:|---|---|
|
||||
| P2P/大厅连接失败诊断 | 2 | 70 | 22 | Unity/Assets/Scripts\TH1_Logic\Steam\SimpleP2P.cs:480: LogSystem.LogError($"Connection failed - Reason: {endReason}"); | 03e368c38bf498c0ede3d3d6b1a4ba9, 5bf29273f5c83382e8a559c3a51c64b1 |
|
||||
| 其他项目诊断日志 | 9 | 55 | 31 | 未直接定位 | 5fd467876966dade995de78f0f842730, 7076e90b6a985d264771f26e77281aa6, 26e2c7ab0fb8fdb0d95355ae254b4995 |
|
||||
| 网络发送失败诊断 | 11 | 22 | 22 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1242: LogSystem.LogError($"ActionConfirm send failed, abort local execute: {ActionId.GetStringLog()}"); | 1d0340f4a74af4a27367b74fdfca40e5, 8d7cbe77207721b339ce20bf96d27652, ed7645351344dd651c0a27dfc3573b10 |
|
||||
| 多语言资源加载为空 / 多语言 ID 为空 | 9 | 15 | 15 | Unity/Assets/Scripts\TH1_AOT\ResourceLoader.cs:89: Debug.LogError($"[TH1.YooAsset] Loaded null resource: {resolvedLocation}, type={typeof(T).Name}");<br>Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:176: LogSystem.LogError($"多语言ID为空");<br>Unity/Assets/Scripts\TH1_Logic\Multilingual\MultilingualManager.cs:200: LogSystem.LogError($"多语言ID为空"); | b176950b03c8f954ad35f9520da10d23, f5aa9c0a1411b1f09fd13146d745090d, 12dcc82a69446ab0f1cb4caf44b0579a |
|
||||
| AI 计算死循环保护 | 2 | 11 | 5 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:179: LogSystem.LogError($"死循环了,最终记录点为:{MainEditor.Instance.BTNodeId}");<br>Unity/Assets/Scripts\TH1_Logic\AI\AIActionBase.cs:528: LogSystem.LogError($"死循环了"); | 3e65a3369290cfa41e540f0612aefad5, b8f5e42d2f8416ec9ab5e4f260a83b24 |
|
||||
| 结算卡住兜底诊断 | 5 | 5 | 5 | Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:328: MatchSettlementStuckGuard.CheckAndRecover(map, info, MatchSettlementType.Normal, kv.Key);<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:424: public static class MatchSettlementStuckGuard<br>Unity/Assets/Scripts\TH1_Logic\MatchConfig\MatchSettlementInfo.cs:484: sb.Append("[MatchSettlementStuck] 触发兜底:"); | 57b4823e12accd4cb391b375ca13b229, bf5719f6215aa6dda0ddcfa334e74300, 87f1839a648cac091754402cae2340f4 |
|
||||
| 断线重连/ForceUpdate 诊断 | 3 | 4 | 4 | Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:418: public void SendRequestForceUpdate()<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:425: LogSystem.LogWarning($"客户端请求重连冷却中: SendRequestForceUpdate, remain={RequestForceUpdateCooldown - (now - _lastRequestForceUpdateTime):F1}s");<br>Unity/Assets/Scripts\TH1_Logic\Steam\GameNetSender.cs:430: LogSystem.LogError($"客户端请求重连: SendRequestForceUpdate"); | 29ea271af8759bbf7e679bf751ef6373, 519eac5f561dfb99ea775c5294065411, 22fa9e63dc483a12cf3e1db26971c7fd |
|
||||
| 行动执行玩家不一致 | 2 | 3 | 3 | Unity/Assets/Scripts\TH1_Logic\Action\ActionLogic.cs:1215: LogSystem.LogError($"CompleteExecute Player 不一致 {ActionId.GetStringLog()}"); | 217a8eace225fadbb28fe9c001b38d7c, acf75275ad92788914ce511f926df1ad |
|
||||
| STS/OSS 上传失败诊断 | 2 | 2 | 2 | Unity/Assets/Scripts\TH1_Logic\Oss\OssManager.cs:127: LogSystem.LogError($"CollectData upload failed: {ex.Message}"); | 4b3f50847e230a1b123fc4d7b72cc3ce, 1f51b04a2682e0031ec4b1bdc1e6ac48 |
|
||||
| Origin Player 为空诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:683: LogSystem.LogError($"Origin Player is null target.id:{target.Id}");<br>Unity/Assets/Scripts\TH1_Logic\Unit\UnitLogic.cs:738: LogSystem.LogError($"RecoverHealth Origin Player is null target.id:{target.Id}"); | 76c4a73c625af53a1601bc284e2e3013 |
|
||||
| UI/Renderer 空保护诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:409: Debug.LogError("OnGridInfoAction Error: Main.MapData is null");<br>Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:416: Debug.LogError("OnGridInfoAction Error: Main.MapData.PlayerMap?.SelfPlayerData is null");<br>Unity/Assets/Scripts\TH1_Logic\Input\InputLogic.cs:427: Debug.LogError("OnGridInfoAction Error: UIManager.Instance?.UIInfoManager is null"); | 96f415d89f78f0ac31e19174e23246ba |
|
||||
| 相似 Action 重复诊断 | 1 | 1 | 1 | Unity/Assets/Scripts\TH1_Logic\AI\AILogic.cs:230: if(_sameCount > 5) LogSystem.LogError($"存在相似action ,记录点为:{MainEditor.Instance.BTNodeId} ," + | f1c119ee9f0c60b7f3a383def5491cd6 |
|
||||
|
||||
## 明细
|
||||
|
||||
| Issue | 类别 | 类型 | 次数 | 设备 | 最近上报 | 消息 |
|
||||
|---|---|---|---:|---:|---|---|
|
||||
| [5bf29273f5c83382e8a559c3a51c64b1](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5bf29273f5c83382e8a559c3a51c64b1?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 47 | 6 | 2026-06-12 15:31:20 | 应用层拒绝连接 - 错误码: 1000,可能原因:1.对方未创建监听套接字 2.对方主动拒绝 3.对方游戏未运行 |
|
||||
| [3b1873b47fcdc15a0284798ea83be004](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3b1873b47fcdc15a0284798ea83be004?pid=10) | 其他项目诊断日志 | UnityLogError | 46 | 22 | 2026-06-12 15:28:48 | Releasing render texture that is set as Camera.targetTexture! |
|
||||
| [03e368c38bf498c0ede3d3d6b1a4ba9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/03e368c38bf498c0ede3d3d6b1a4ba9?pid=10) | P2P/大厅连接失败诊断 | UnityLogError | 23 | 16 | 2026-06-12 15:37:43 | Connection failed - Reason: 1000 |
|
||||
| [3e65a3369290cfa41e540f0612aefad5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3e65a3369290cfa41e540f0612aefad5?pid=10) | AI 计算死循环保护 | UnityLogError | 10 | 4 | 2026-06-12 15:16:58 | 死循环了 |
|
||||
| [16bd34f1b4756ad8655c843c0f9da506](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/16bd34f1b4756ad8655c843c0f9da506?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 4 | 2026-06-12 15:34:42 | MemberStateSyncMessage: 房主广播失败 |
|
||||
| [ed7645351344dd651c0a27dfc3573b10](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ed7645351344dd651c0a27dfc3573b10?pid=10) | 网络发送失败诊断 | UnityLogError | 4 | 4 | 2026-06-12 15:34:42 | P2P broadcast preflight failed: target=76561199261233300, reason=Target is not a lobby peer: 76561199261233300 |
|
||||
| [442bf5a8e6242beea1cb0ce03556f614](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/442bf5a8e6242beea1cb0ce03556f614?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-12 15:34:41 | MemberStateSyncMessage: 房主广播失败 |
|
||||
| [ad4750c819ae6ea6a508646025d0eebe](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ad4750c819ae6ea6a508646025d0eebe?pid=10) | 网络发送失败诊断 | UnityLogError | 3 | 3 | 2026-06-12 15:34:41 | P2P broadcast preflight failed: target=76561199261233300, reason=No connection to 76561199261233300 |
|
||||
| [b176950b03c8f954ad35f9520da10d23](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b176950b03c8f954ad35f9520da10d23?pid=10) | 多语言资源加载为空 | UnityLogError | 3 | 3 | 2026-06-12 12:42:42 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [f5aa9c0a1411b1f09fd13146d745090d](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f5aa9c0a1411b1f09fd13146d745090d?pid=10) | 多语言资源加载为空 | UnityLogError | 3 | 3 | 2026-06-12 14:25:08 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [217a8eace225fadbb28fe9c001b38d7c](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/217a8eace225fadbb28fe9c001b38d7c?pid=10) | 行动执行玩家不一致 | UnityLogError | 2 | 2 | 2026-06-12 15:08:50 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : ThirdHero |
|
||||
| [26e2c7ab0fb8fdb0d95355ae254b4995](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/26e2c7ab0fb8fdb0d95355ae254b4995?pid=10) | 其他项目诊断日志 | UnityLogError | 2 | 2 | 2026-06-12 15:34:56 | |
|
||||
| [519eac5f561dfb99ea775c5294065411](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/519eac5f561dfb99ea775c5294065411?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 2 | 2 | 2026-06-12 15:02:24 | 客户端请求重连: SendRequestForceUpdate |
|
||||
| [949458f51e04d6cf3f4ff9ee18b7e160](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/949458f51e04d6cf3f4ff9ee18b7e160?pid=10) | 多语言资源加载为空 | UnityLogError | 2 | 2 | 2026-06-12 12:42:44 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [bae1cbeda505602c5dbbc984c0fa1d88](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bae1cbeda505602c5dbbc984c0fa1d88?pid=10) | 多语言资源加载为空 | UnityLogError | 2 | 2 | 2026-06-12 12:42:43 | [TH1.YooAsset] Loaded null resource: Assets/BundleResources/Export/Multilingual, type=MultilingualData |
|
||||
| [ffb81e99d467263e9884a7aec3fcd845](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ffb81e99d467263e9884a7aec3fcd845?pid=10) | 网络发送失败诊断 | UnityLogError | 2 | 2 | 2026-06-12 15:34:42 | MapConfirmMessage: 房主广播失败 |
|
||||
| [115622af2c5f78d14b4e6b900ba1d151](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/115622af2c5f78d14b4e6b900ba1d151?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:25 | 多语言ID为空 |
|
||||
| [12dcc82a69446ab0f1cb4caf44b0579a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/12dcc82a69446ab0f1cb4caf44b0579a?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:25 | 多语言ID为空 |
|
||||
| [1d0340f4a74af4a27367b74fdfca40e5](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1d0340f4a74af4a27367b74fdfca40e5?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:37:44 | UpdateLobbyDataMessage: 发送给成员失败 memberId=76561199246777025 |
|
||||
| [1f51b04a2682e0031ec4b1bdc1e6ac48](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/1f51b04a2682e0031ec4b1bdc1e6ac48?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:14:36 | CollectData upload failed: STS request failed: HTTP/1.1 403 Forbidden |
|
||||
| [22fa9e63dc483a12cf3e1db26971c7fd](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/22fa9e63dc483a12cf3e1db26971c7fd?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:26:19 | 触发断线重连, 触发原因: OK |
|
||||
| [29ea271af8759bbf7e679bf751ef6373](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/29ea271af8759bbf7e679bf751ef6373?pid=10) | 断线重连/ForceUpdate 诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:02:25 | 触发断线重连, 触发原因: Disconnected |
|
||||
| [30622ad1a79c1111188744b6714fa6a4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/30622ad1a79c1111188744b6714fa6a4?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:30:45 | P2P broadcast preflight failed: target=76561198414473361, reason=Connection to 76561198414473361 is not active for queueing. State: k_ESteamNetworkingConnectionState_ClosedByPeer |
|
||||
| [3734a997ed6d691a08e092e56913c40a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/3734a997ed6d691a08e092e56913c40a?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 10:32:02 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=634905386, ActionIndex=437, DataUnits=33, RenderUnits=34, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[436]: Version=436, MapHash=a2d84780acdfeabc1a2702f510a3ffa4 Action : Build Wonder : None Resource : Mine Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitA… |
|
||||
| [4b3f50847e230a1b123fc4d7b72cc3ce](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/4b3f50847e230a1b123fc4d7b72cc3ce?pid=10) | STS/OSS 上传失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:14:36 | STS request failed: HTTP/1.1 403 Forbidden, Response: {"error":"Steam verification failed: Steam API 请求失败(重试 2 次): Steam API 请求超时(8000ms)"} |
|
||||
| [5506094b5e9df26bc4d5fd90349178cb](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5506094b5e9df26bc4d5fd90349178cb?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:24 | 多语言ID为空 |
|
||||
| [55f59da02d6a71a429d56dbe65e20f4f](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/55f59da02d6a71a429d56dbe65e20f4f?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:30:47 | MemberStateSyncMessage: 房主广播失败 |
|
||||
| [57b4823e12accd4cb391b375ca13b229](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/57b4823e12accd4cb391b375ca13b229?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:03:31 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=325 Turn=28 NetMode=Single PlayerCount=17 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=28 CityCount=20 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsS… |
|
||||
| [5fd467876966dade995de78f0f842730](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/5fd467876966dade995de78f0f842730?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 15:49:54 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=131154980, ActionIndex=3504, DataUnits=50, RenderUnits=51, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3503]: Version=3503, MapHash=10d52600eee9a090a6a724a41a6bf4a6 Action : UnitAttackAlly Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation … |
|
||||
| [7076e90b6a985d264771f26e77281aa6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/7076e90b6a985d264771f26e77281aa6?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 15:42:08 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=131154980, ActionIndex=3048, DataUnits=50, RenderUnits=51, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3047]: Version=3047, MapHash=61a57aa2a6e9d87d426c30289da9c789 Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : No… |
|
||||
| [76c4a73c625af53a1601bc284e2e3013](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/76c4a73c625af53a1601bc284e2e3013?pid=10) | Origin Player 为空诊断 | UnityLogError | 1 | 1 | 2026-06-12 08:27:06 | Origin Player is null target.id:430 |
|
||||
| [775b456dd3864ee2fd0e480673d7c1c9](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/775b456dd3864ee2fd0e480673d7c1c9?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:34:42 | P2P broadcast preflight failed: target=76561198446408112, reason=No connection to 76561198446408112 |
|
||||
| [82d15ccd49201fabece20edd1853cdda](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/82d15ccd49201fabece20edd1853cdda?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 12:56:27 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=2294221302, ActionIndex=2800, DataUnits=75, RenderUnits=76, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[2799]: Version=2799, MapHash=808b4dc219c91b84ad23779b57fa27ce Action : UnitMove Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : Non… |
|
||||
| [87f1839a648cac091754402cae2340f4](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/87f1839a648cac091754402cae2340f4?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:28:21 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=902 Turn=5 NetMode=Multi PlayerCount=2 Player Id=901 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=6 CityCount=3 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSuccess… |
|
||||
| [881c4ef7885f6fa88ed1f214352fb990](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/881c4ef7885f6fa88ed1f214352fb990?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 15:32:30 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=131154980, ActionIndex=2369, DataUnits=76, RenderUnits=77, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[2368]: Version=2368, MapHash=110ab1b166ccd6bacb1d56e8db6e8baa Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : No… |
|
||||
| [8d7cbe77207721b339ce20bf96d27652](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/8d7cbe77207721b339ce20bf96d27652?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:37:44 | P2P message send failed: target=76561199246777025, reason=Target member is not in lobby: 76561199246777025 |
|
||||
| [96f415d89f78f0ac31e19174e23246ba](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/96f415d89f78f0ac31e19174e23246ba?pid=10) | UI/Renderer 空保护诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:02:25 | OnGridInfoAction Error: Main.MapData is null |
|
||||
| [a63d7c50108ffe49f2c02217f3d8eee8](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a63d7c50108ffe49f2c02217f3d8eee8?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 10:32:00 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=634905386, ActionIndex=429, DataUnits=34, RenderUnits=35, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[428]: Version=428, MapHash=be3b9dab92fa24c2de8ac5f6baab80c1 Action : UnitAttack Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None … |
|
||||
| [a92e5105a3a896fb74424242bfbddf0a](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/a92e5105a3a896fb74424242bfbddf0a?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:23:44 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=325 Turn=6 NetMode=Multi PlayerCount=2 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=6 CityCount=1 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucces… |
|
||||
| [acf75275ad92788914ce511f926df1ad](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/acf75275ad92788914ce511f926df1ad?pid=10) | 行动执行玩家不一致 | UnityLogError | 1 | 1 | 2026-06-12 12:39:18 | CompleteExecute Player 不一致 Action : BuyCultureCard Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : None PlayerAction : None AIParam : AllClear Tech : None CultureCardType : MonumentForest |
|
||||
| [b36fb8882dd4aabcf8618737d0ec5a65](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b36fb8882dd4aabcf8618737d0ec5a65?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:24 | 多语言ID为空 |
|
||||
| [b8f5e42d2f8416ec9ab5e4f260a83b24](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b8f5e42d2f8416ec9ab5e4f260a83b24?pid=10) | AI 计算死循环保护 | UnityLogError | 1 | 1 | 2026-06-12 13:35:32 | 死循环了,最终记录点为:194 |
|
||||
| [b9ef15d9ba6eda7d608a9816cef2f41b](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/b9ef15d9ba6eda7d608a9816cef2f41b?pid=10) | 网络发送失败诊断 | UnityLogError | 1 | 1 | 2026-06-12 15:30:46 | P2P broadcast preflight failed: target=76561198414473361, reason=No connection to 76561198414473361 |
|
||||
| [bf5719f6215aa6dda0ddcfa334e74300](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/bf5719f6215aa6dda0ddcfa334e74300?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:28:21 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=902 Turn=5 NetMode=Multi PlayerCount=2 Player Id=901 IsAI=False Alive=True IsSurrender=True IsSurvival=False DieMark=False Turn=6 CityCount=3 Group(IsSettlement=True,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=True IsWin=False Task[0] Type=ScoreWin IsSettlement=True IsSuccess… |
|
||||
| [e0e8d47df59e68e38968a6d05ed1a882](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e0e8d47df59e68e38968a6d05ed1a882?pid=10) | 其他项目诊断日志 | UnityLogError | 1 | 1 | 2026-06-12 07:48:53 | [UnitRendererMismatchBeforeAction] 数据层Unit与渲染层Unit不一致 MapId=2242826177, ActionIndex=3149, DataUnits=61, RenderUnits=62, RenderOnly=1, DataOnly=0 PrevActions(count=2): PrevAction[3148]: Version=3148, MapHash=0ceb6f1746ddba5ef68843f17bc7ad60 Action : UnitAttackAlly Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation… |
|
||||
| [e571d58f12740545f5a2756a546dc992](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/e571d58f12740545f5a2756a546dc992?pid=10) | 结算卡住兜底诊断 | UnityLogError | 1 | 1 | 2026-06-12 13:23:44 | [MatchSettlementStuck] 触发兜底:MatchType=Normal BlockingPlayerId=325 Turn=6 NetMode=Multi PlayerCount=2 Player Id=325 IsAI=False Alive=True IsSurrender=False IsSurvival=True DieMark=False Turn=6 CityCount=1 Group(IsSettlement=False,IsWin=False) Settlement[0] Type=AllSuccessOrFailure IsSettlement=False IsWin=True Task[0] Type=ScoreWin IsSettlement=True IsSucces… |
|
||||
| [ed493d4b6926c3bb5efe569a5db211e3](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/ed493d4b6926c3bb5efe569a5db211e3?pid=10) | 多语言 ID 为空 | UnityLogError | 1 | 1 | 2026-06-12 15:38:24 | 多语言ID为空 |
|
||||
| [f1c119ee9f0c60b7f3a383def5491cd6](https://crashsight.qq.com/crash-reporting/errors/01076c49ce/f1c119ee9f0c60b7f3a383def5491cd6?pid=10) | 相似 Action 重复诊断 | UnityLogError | 1 | 1 | 2026-06-12 10:59:09 | 存在相似action ,记录点为:771 ,Action为:Action : LearnTech Wonder : None Resource : None Feature : None Terrain : None Unit : None Giant : None Vegetation : None UnitAction : None CityLevelUpAction : None CityAction : None GridMiscAction : None Skill : NONE Tech : Trade PlayerAction : None AIParam : AllClear Tech : Trade CultureCardType : None 重复次数 :6 |
|
||||
@ -0,0 +1,230 @@
|
||||
{
|
||||
"date": "2026-06-12",
|
||||
"version": "0.7.3f",
|
||||
"capture": {
|
||||
"capturedAtUtc": "2026-06-12T07:50:49+00:00",
|
||||
"capturedAtLocal": "2026-06-12 15:50:49",
|
||||
"rawDir": "Temp\\CrashSight\\Daily_2026-06-12_0.7.3f_refresh_1550",
|
||||
"reportDir": "MD\\CrashSight_2026-06-12_0.7.3f_refresh_1550"
|
||||
},
|
||||
"filter": {
|
||||
"version": "0.7.3f",
|
||||
"date": "last_1_day",
|
||||
"status": "0,2",
|
||||
"exceptionCategoryList": "ERROR",
|
||||
"sortField": "uploadTime",
|
||||
"sortOrder": "desc",
|
||||
"rows": 200
|
||||
},
|
||||
"totalIssues": 53,
|
||||
"blockingIssues": 5,
|
||||
"blockingOccurrences": 13,
|
||||
"logerrorIssues": 48,
|
||||
"logerrorOccurrences": 190,
|
||||
"blockingReports": [
|
||||
{
|
||||
"categoryId": "null-reference",
|
||||
"title": "空引用异常",
|
||||
"issueCount": 4,
|
||||
"occurrences": 12,
|
||||
"path": "blocking/001_null-reference.md",
|
||||
"issues": [
|
||||
"dc1340f866d020b4b560a92559c89a21",
|
||||
"0b41041d271c3ca1128d6f10e46b27b2",
|
||||
"be8ba33741c7c959e4bff388decf5877",
|
||||
"0c808432af82e7b66883205719dbb199"
|
||||
]
|
||||
},
|
||||
{
|
||||
"categoryId": "announce-major-event-null",
|
||||
"title": "重大事件公告 UI 空引用",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"path": "blocking/002_announce-major-event-null.md",
|
||||
"issues": [
|
||||
"fe24c7bf54531228f55d73530508a9fa"
|
||||
]
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
{
|
||||
"id": "p2p-lobby-connection-failure",
|
||||
"title": "P2P/大厅连接失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 70,
|
||||
"issues": [
|
||||
"03e368c38bf498c0ede3d3d6b1a4ba9",
|
||||
"5bf29273f5c83382e8a559c3a51c64b1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "other-logerror",
|
||||
"title": "其他项目诊断日志",
|
||||
"class": "logerror",
|
||||
"issueCount": 9,
|
||||
"occurrences": 55,
|
||||
"issues": [
|
||||
"5fd467876966dade995de78f0f842730",
|
||||
"7076e90b6a985d264771f26e77281aa6",
|
||||
"26e2c7ab0fb8fdb0d95355ae254b4995",
|
||||
"881c4ef7885f6fa88ed1f214352fb990",
|
||||
"3b1873b47fcdc15a0284798ea83be004",
|
||||
"82d15ccd49201fabece20edd1853cdda",
|
||||
"3734a997ed6d691a08e092e56913c40a",
|
||||
"a63d7c50108ffe49f2c02217f3d8eee8",
|
||||
"e0e8d47df59e68e38968a6d05ed1a882"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "network-send-failure",
|
||||
"title": "网络发送失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 11,
|
||||
"occurrences": 22,
|
||||
"issues": [
|
||||
"1d0340f4a74af4a27367b74fdfca40e5",
|
||||
"8d7cbe77207721b339ce20bf96d27652",
|
||||
"ed7645351344dd651c0a27dfc3573b10",
|
||||
"775b456dd3864ee2fd0e480673d7c1c9",
|
||||
"ffb81e99d467263e9884a7aec3fcd845",
|
||||
"16bd34f1b4756ad8655c843c0f9da506",
|
||||
"ad4750c819ae6ea6a508646025d0eebe",
|
||||
"442bf5a8e6242beea1cb0ce03556f614",
|
||||
"55f59da02d6a71a429d56dbe65e20f4f",
|
||||
"b9ef15d9ba6eda7d608a9816cef2f41b",
|
||||
"30622ad1a79c1111188744b6714fa6a4"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "multilingual-empty-id",
|
||||
"title": "多语言资源加载为空 / 多语言 ID 为空",
|
||||
"class": "logerror",
|
||||
"issueCount": 9,
|
||||
"occurrences": 15,
|
||||
"issues": [
|
||||
"12dcc82a69446ab0f1cb4caf44b0579a",
|
||||
"115622af2c5f78d14b4e6b900ba1d151",
|
||||
"b36fb8882dd4aabcf8618737d0ec5a65",
|
||||
"5506094b5e9df26bc4d5fd90349178cb",
|
||||
"ed493d4b6926c3bb5efe569a5db211e3",
|
||||
"f5aa9c0a1411b1f09fd13146d745090d",
|
||||
"949458f51e04d6cf3f4ff9ee18b7e160",
|
||||
"bae1cbeda505602c5dbbc984c0fa1d88",
|
||||
"b176950b03c8f954ad35f9520da10d23"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "null-reference",
|
||||
"title": "空引用异常",
|
||||
"class": "blocking",
|
||||
"issueCount": 4,
|
||||
"occurrences": 12,
|
||||
"issues": [
|
||||
"dc1340f866d020b4b560a92559c89a21",
|
||||
"0b41041d271c3ca1128d6f10e46b27b2",
|
||||
"be8ba33741c7c959e4bff388decf5877",
|
||||
"0c808432af82e7b66883205719dbb199"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ai-loop-guard",
|
||||
"title": "AI 计算死循环保护",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 11,
|
||||
"issues": [
|
||||
"3e65a3369290cfa41e540f0612aefad5",
|
||||
"b8f5e42d2f8416ec9ab5e4f260a83b24"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "match-settlement-stuck-fallback",
|
||||
"title": "结算卡住兜底诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 5,
|
||||
"occurrences": 5,
|
||||
"issues": [
|
||||
"57b4823e12accd4cb391b375ca13b229",
|
||||
"bf5719f6215aa6dda0ddcfa334e74300",
|
||||
"87f1839a648cac091754402cae2340f4",
|
||||
"e571d58f12740545f5a2756a546dc992",
|
||||
"a92e5105a3a896fb74424242bfbddf0a"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reconnect-forceupdate",
|
||||
"title": "断线重连/ForceUpdate 诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 3,
|
||||
"occurrences": 4,
|
||||
"issues": [
|
||||
"29ea271af8759bbf7e679bf751ef6373",
|
||||
"519eac5f561dfb99ea775c5294065411",
|
||||
"22fa9e63dc483a12cf3e1db26971c7fd"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "action-completeexecute-player-mismatch",
|
||||
"title": "行动执行玩家不一致",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 3,
|
||||
"issues": [
|
||||
"217a8eace225fadbb28fe9c001b38d7c",
|
||||
"acf75275ad92788914ce511f926df1ad"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "sts-upload-failure",
|
||||
"title": "STS/OSS 上传失败诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 2,
|
||||
"occurrences": 2,
|
||||
"issues": [
|
||||
"4b3f50847e230a1b123fc4d7b72cc3ce",
|
||||
"1f51b04a2682e0031ec4b1bdc1e6ac48"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "origin-player-null-diagnostic",
|
||||
"title": "Origin Player 为空诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"76c4a73c625af53a1601bc284e2e3013"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ui-renderer-null-guard",
|
||||
"title": "UI/Renderer 空保护诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"96f415d89f78f0ac31e19174e23246ba"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "duplicate-similar-action",
|
||||
"title": "相似 Action 重复诊断",
|
||||
"class": "logerror",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"f1c119ee9f0c60b7f3a383def5491cd6"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "announce-major-event-null",
|
||||
"title": "重大事件公告 UI 空引用",
|
||||
"class": "blocking",
|
||||
"issueCount": 1,
|
||||
"occurrences": 1,
|
||||
"issues": [
|
||||
"fe24c7bf54531228f55d73530508a9fa"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -40,6 +40,8 @@ namespace TH1_Logic.Core
|
||||
// Runtime entry loaded by the AOT bootstrap after TH1.Hotfix is available.
|
||||
public class Main : MonoBehaviour
|
||||
{
|
||||
private const string StartGameAnnouncementTimerMessage = "Main_CenterMessage_Anim";
|
||||
|
||||
public static Main Instance { get; private set; }
|
||||
[Header("Debug Param")]
|
||||
public bool NoAI = false;
|
||||
@ -271,13 +273,7 @@ namespace TH1_Logic.Core
|
||||
if (MapData.GetCapitalCityDataByPlayerId(selfp.Id, out var cap) &&
|
||||
MapData.GetGridDataByCityId(cap.Id, out var grid))
|
||||
camera.CameraFocusOnGrid(grid, true);
|
||||
Timer.Instance.TimerRegister(this, () =>
|
||||
{
|
||||
//start game
|
||||
var announcement = new ShowUIAnnounceMajorEvent { EventType = UIAnnounceMajorEventType.StartGame };
|
||||
EventManager.Publish(announcement);
|
||||
//UIManager.Instance.CenterMessageUI.SetCenterMessageShow(UICenterMessageID.StartGame,MapData.PlayerMap.SelfPlayerData);
|
||||
}, 1.5f, "Main_CenterMessage_Anim");
|
||||
RegisterStartGameAnnouncement(MapData);
|
||||
|
||||
MapData.SaveMatchConfig(MapConfig);
|
||||
// 新版存档:新开局一定先写 begin。
|
||||
@ -428,13 +424,7 @@ namespace TH1_Logic.Core
|
||||
var selfp = MapData.PlayerMap.SelfPlayerData;
|
||||
if(MapData.GetCapitalCityDataByPlayerId(selfp.Id, out var cap) && MapData.GetGridDataByCityId(cap.Id, out var grid))
|
||||
camera.CameraFocusOnGrid(grid,true);
|
||||
Timer.Instance.TimerRegister(this, () =>
|
||||
{
|
||||
//start game
|
||||
var announcement = new ShowUIAnnounceMajorEvent { EventType = UIAnnounceMajorEventType.StartGame};
|
||||
EventManager.Publish(announcement);
|
||||
//UIManager.Instance.CenterMessageUI.SetCenterMessageShow(UICenterMessageID.StartGame,MapData.PlayerMap.SelfPlayerData);
|
||||
},1.5f,"Main_CenterMessage_Anim");
|
||||
RegisterStartGameAnnouncement(MapData);
|
||||
|
||||
// 联机新开局也写 begin,但必须放在 GameStart 广播成功之后。
|
||||
// 否则房主本地开始失败时可能留下一个没有真正开局的 begin。
|
||||
@ -573,11 +563,28 @@ namespace TH1_Logic.Core
|
||||
{
|
||||
LogSystem.LogError(reason);
|
||||
NetworkPlayerTipManager.Instance.Request(NetworkPlayerTipType.GameStartFailed);
|
||||
Timer.Instance.CancelByMessage("Main_CenterMessage_Anim");
|
||||
Timer.Instance?.CancelByMessage(StartGameAnnouncementTimerMessage);
|
||||
MapGeneratorLogic = previousGenerator;
|
||||
RestoreNetworkMatchState(previousMap, previousInput, previousInteraction, reason);
|
||||
}
|
||||
|
||||
private void RegisterStartGameAnnouncement(MapData expectedMap)
|
||||
{
|
||||
var timer = Timer.Instance;
|
||||
if (timer == null) return;
|
||||
|
||||
timer.CancelByMessage(StartGameAnnouncementTimerMessage);
|
||||
timer.TimerRegister(this, () =>
|
||||
{
|
||||
if (!ReferenceEquals(MapData, expectedMap)) return;
|
||||
if (expectedMap?.PlayerMap?.SelfPlayerData == null) return;
|
||||
|
||||
var announcement = new ShowUIAnnounceMajorEvent { EventType = UIAnnounceMajorEventType.StartGame };
|
||||
EventManager.Publish(announcement);
|
||||
//UIManager.Instance.CenterMessageUI.SetCenterMessageShow(UICenterMessageID.StartGame,MapData.PlayerMap.SelfPlayerData);
|
||||
}, 1.5f, StartGameAnnouncementTimerMessage);
|
||||
}
|
||||
|
||||
// 成员客户端开始多人游戏
|
||||
public bool NetStartGame(MapData map)
|
||||
{
|
||||
@ -614,13 +621,7 @@ namespace TH1_Logic.Core
|
||||
if(MapData.GetCapitalCityDataByPlayerId(selfp.Id, out var cap)
|
||||
&& MapData.GetGridDataByCityId(cap.Id, out var grid))
|
||||
camera.CameraFocusOnGrid(grid,true);
|
||||
Timer.Instance.TimerRegister(this, () =>
|
||||
{
|
||||
//start game
|
||||
var announcement = new ShowUIAnnounceMajorEvent { EventType = UIAnnounceMajorEventType.StartGame};
|
||||
EventManager.Publish(announcement);
|
||||
//UIManager.Instance.CenterMessageUI.SetCenterMessageShow(UICenterMessageID.StartGame,MapData.PlayerMap.SelfPlayerData);
|
||||
},1.5f,"Main_CenterMessage_Anim");
|
||||
RegisterStartGameAnnouncement(MapData);
|
||||
|
||||
// 成员端也要保存本机 begin。之后本机游戏结束会写 end + Ended record,
|
||||
// 回放需要这条 record 同时索引到开局快照和结束快照。
|
||||
@ -911,6 +912,7 @@ namespace TH1_Logic.Core
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
Timer.Instance?.CancelByMessage(StartGameAnnouncementTimerMessage);
|
||||
MapData = null;
|
||||
}
|
||||
|
||||
|
||||
@ -48,7 +48,10 @@ namespace TH1_UI.Controller.Announce
|
||||
// 使用接收到的数据设置UI内容
|
||||
if (WindowScript != null)
|
||||
{
|
||||
WindowScript.SetContent(evt.EventType, evt.Param1, evt.Param2);
|
||||
if (!WindowScript.SetContent(evt.EventType, evt.Param1, evt.Param2))
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -82,4 +85,4 @@ namespace TH1_UI.Controller.Announce
|
||||
// 重大事件公告UI不需要取消地图高亮
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ namespace TH1_UI.View.Announce
|
||||
_grayScaleMat = TH1Resource.ResourceLoader.Load<Material>("Materials/GrayScale");
|
||||
}
|
||||
|
||||
public void SetContent(UIAnnounceMajorEventType eventType, int param1, int param2)
|
||||
public bool SetContent(UIAnnounceMajorEventType eventType, int param1, int param2)
|
||||
{
|
||||
_eventType = eventType;
|
||||
_param1 = param1;
|
||||
@ -61,7 +61,7 @@ namespace TH1_UI.View.Announce
|
||||
if (Title == null || Content == null || LeaderImage == null || WonderImage == null)
|
||||
{
|
||||
LogSystem.LogError("UIAnnounceMajorEventView.SetContent(): Title or Content or Image or Image is null");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
UICenterMessageInfo info;
|
||||
@ -72,12 +72,14 @@ namespace TH1_UI.View.Announce
|
||||
case UIAnnounceMajorEventType.StartGame:
|
||||
|
||||
//step #1 获取界面的文本info,以及真人玩家data和playerInfo
|
||||
if (!Table.Instance.UICenterMessageDataAssets.GetUICenterMessageInfo(UICenterMessageID.StartGame, out info)) break;
|
||||
player = Main.MapData.PlayerMap.SelfPlayerData;
|
||||
Table.Instance.PlayerDataAssets.GetPlayerInfo(player, out playerInfo);
|
||||
if (!Table.Instance.UICenterMessageDataAssets.GetUICenterMessageInfo(UICenterMessageID.StartGame, out info)) return false;
|
||||
var map = Main.MapData;
|
||||
player = map?.PlayerMap?.SelfPlayerData;
|
||||
if (player == null) return false;
|
||||
if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(player, out playerInfo)) return false;
|
||||
string leaderName = MultilingualManager.Instance.GetMultilingualTextSafe(playerInfo.LeaderName);
|
||||
string civName = MultilingualManager.Instance.GetMultilingualTextSafe(playerInfo.CivName);
|
||||
string forceName = Logic.PlayerLogic.GetDisplayForceName(Main.MapData, player);
|
||||
string forceName = Logic.PlayerLogic.GetDisplayForceName(map, player);
|
||||
|
||||
//step #2 设置文字和图片
|
||||
MultilingualManager.Instance.SetUIText(Content,info.Message,new List<string>(){leaderName,civName,forceName});
|
||||
@ -209,7 +211,8 @@ namespace TH1_UI.View.Announce
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -39,6 +39,7 @@ namespace TH1_UI.View.Base
|
||||
// ✅ [修复] 必须在这里初始化 AnimancerComponent
|
||||
ApplyDefaultScrollSensitivity();
|
||||
_animancer = GetComponent<AnimancerComponent>();
|
||||
ApplyUiAnimancerDisablePolicy();
|
||||
|
||||
// 如果 Inspector 中没有手动指定打开动画,则使用默认的淡入动画
|
||||
if (_showAnimationClip == null)
|
||||
@ -73,6 +74,16 @@ namespace TH1_UI.View.Base
|
||||
}
|
||||
}
|
||||
|
||||
void ApplyUiAnimancerDisablePolicy()
|
||||
{
|
||||
var animancers = GetComponentsInChildren<AnimancerComponent>(true);
|
||||
foreach (var animancer in animancers)
|
||||
{
|
||||
if (animancer == null) continue;
|
||||
animancer.ActionOnDisable = AnimancerComponent.DisableAction.Pause;
|
||||
}
|
||||
}
|
||||
|
||||
void _Resize()
|
||||
{
|
||||
// ... (此部分代码未做修改,保持原样)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user