6.7 KiB
6.7 KiB
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_exportbundle、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 合并分析。