Object reference not set to an instance of an object NullReferenceException: Obj...

2026年07月23日 22:23 processing

错误信息

NullReferenceException Object reference not set to an instance of an object NullReferenceException: Object reference not set to an instance of an object at PDX.ModsUI.ModsUIView.Show (PDX.ModsUI.ModsUIScreen screen, System.String id, System.Boolean triggerEvent, PDX.ModsUI.QueryParameters queryParameters) [0x00006] in <83c883a34cf94a95bc88622c6f9ed7ed>:0 at PDX.ModsUI.ModsUIView.Show () [0x00007] in <83c883a34cf94a95bc88622c6f9ed7ed>:0 at Colossal.PSI.PdxSdk.PdxSdkPlatform+<>c.<ShowModsUI>b__271_0 (PDX.ModsUI.ModsUIView ui) [0x00000] in <79f0c6cc26ea43aeb1d7078a22462666>:0 at Colossal.PSI.PdxSdk.PdxSdkPlatform.ShowModsUI (System.Action`1[T] showAction) [0x00029] in <79f0c6cc26ea43aeb1d7078a22462666>:0 at Colossal.PSI.PdxSdk.PdxSdkPlatform.ShowModsUI () [0x00000] in <79f0c6cc26ea43aeb1d7078a22462666>:0 at Game.PSI.PdxSdk.PdxModsUI.Show () [0x0000a] in <36b776ac50074e0681b3242b2abfd5b6>:0 at Game.UI.Menu.MenuUISystem.ShowModsUI () [0x00091] in <36b776ac50074e0681b3242b2abfd5b6>:0 at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_0 (System.Object state) [0x00000] in <ec44db4194e74e18bbf336ba559460da>:0 at UnityEngine.UnitySynchronizationContext+WorkRequest.Invoke () [0x00002] in <3f4ee31e4ddf4e8a936eabcff96e3617>:0 at UnityEngine.UnitySynchronizationContext.Exec () [0x0005d] in <3f4ee31e4ddf4e8a936eabcff96e3617>:0 at UnityEngine.UnitySynchronizationContext.ExecuteTasks () [0x00014] in <3f4ee31e4ddf4e8a936eabcff96e3617>:0 Colossal.Logging.CustomLogHandler:LogException(Exception, Object) UnityEngine.Logger:LogException(Exception, Object) UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)

AI 解决方案

1. 🌐 错误翻译

原文:NullReferenceException: Object reference not set to an instance of an object
  at PDX.ModsUI.ModsUIView.Show (PDX.ModsUI.ModsUIScreen screen, System.String id, System.Boolean triggerEvent, PDX.ModsUI.QueryParameters queryParameters) [0x00006] in <83c883a34cf94a95bc88622c6f9ed7ed>:0 
  at PDX.ModsUI.ModsUIView.Show () [0x00007] in <83c883a34cf94a95bc88622c6f9ed7ed>:0 
  at Colossal.PSI.PdxSdk.PdxSdkPlatform+<>c.<ShowModsUI>b__271_0 (PDX.ModsUI.ModsUIView ui) [0x00000] in <79f0c6cc26ea43aeb1d7078a22462666>:0 
  at Colossal.PSI.PdxSdk.PdxSdkPlatform.ShowModsUI (System.Action`1[T] showAction) [0x00029] in <79f0c6cc26ea43aeb1d7078a22462666>:0 
  at Colossal.PSI.PdxSdk.PdxSdkPlatform.ShowModsUI () [0x00000] in <79f0c6cc26ea43aeb1d7078a22462666>:0 
  at Game.PSI.PdxSdk.PdxModsUI.Show () [0x0000a] in <36b776ac50074e0681b3242b2abfd5b6>:0 
  at Game.UI.Menu.MenuUISystem.ShowModsUI () [0x00091] in <36b776ac50074e0681b3242b2abfd5b6>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_0 (System.Object state) [0x00000] in <ec44db4194e74e18bbf336ba559460da>:0 
  at UnityEngine.UnitySynchronizationContext+WorkRequest.Invoke () [0x00002] in <3f4ee31e4ddf4e8a936eabcff96e3617>:0 
  at UnityEngine.UnitySynchronizationContext.Exec () [x0005d] in <3f4ee31e4ddf4e8a936eabcff96e3617>:0 
  at UnityEngine.UnitySynchronizationContext.ExecuteTasks () [x00014] in <3f4ee31e4ddf4e8a936eabcff96e3617>:0 
Colossal.Logging.CustomLogHandler:LogException(Exception, Object)
UnityEngine.Logger:LogException(Exception, Object)
UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)

译文:空引用异常:未将对象引用设置为对象的实例
  位于 PDX.ModsUI.ModsUIView.Show (PDX.ModsUI.ModsUIScreen screen, System.String id, System.Boolean triggerEvent, PDX.ModsUI.QueryParameters queryParameters) [0x00006] 
  位于 PDX.ModsUI.ModsUIView.Show () [x00007]
  位于 Colossal.PSI.PdxSdk.PdxSdkPlatform+<>c.<ShowModsUI>b__271_0 (PDX.ModsUI.ModsUIView ui) [x00000]
  位于 Colossal.PSI.PdxSdk.PdxSdkPlatform.ShowModsUI (System.Action`1[T] showAction) [x00029]
  位于 Colossal.PSI.PdxSdk.PdxSdkPlatform.ShowModsUI () [x00000]
  位于 Game.PSI.PdxSdk.PdxModsUI.Show () [x0000a]
  位于 Game.UI.Menu.MenuUISystem.ShowModsUI () [x00091]
  位于 System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__7_0 (System.Object state) [x00000]
  位于 UnityEngine.UnitySynchronizationContext+WorkRequest.Invoke () [x00002]
  位于 UnityEngine.UnitySynchronizationContext.Exec () [x0005d]
  位于 UnityEngine.UnitySynchronizationContext.ExecuteTasks () [x00014]
Colossal.Logging.CustomLogHandler:LogException(Exception, Object)
UnityEngine.Logger:LogException(Exception, Object)
UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)

2. 🎯 原因分析

根本原因:在调用 PDX.ModsUI.ModsUIView.Show() 方法时,尝试访问或操作某个未初始化/未实例化的引用类型对象,触发了空引用异常。

具体分析

  • 错误栈显示,异常源头位于 PDX.ModsUI.ModsUIView.Show 方法(带参数和不带参数的两个重载),说明尝试显示ModsUI界面时,内部的某个关键对象为null

  • 随后的调用链(PdxSdkPlatform.ShowModsUIPdxModsUI.ShowMenuUISystem.ShowModsUI)表明:是游戏菜单系统触发了ModsUI的显示逻辑。

  • 核心问题点ModsUIView 类在执行 Show 方法时,内部的UI元素、数据源、依赖组件或初始化状态存在null值。
  • 可能的缺失对象

  • ModsUIView 实例本身未正确实例化。

  • 界面依赖的 ModsUIScreen 实例或相关UI控件未初始化。

  • PDX SDK 相关的模块未正确加载或初始化,导致 ModsUIView 创建失败。
  • 3. 💡 解决方案

    需要对 PDX.ModsUI.ModsUIView.Show 方法的调用链进行空值检查,确保在调用前所有必要对象已正确初始化。

    修复后的代码(基于调用链逻辑补充空值校验)

    ```csharp
    // 在调用 ShowModsUI 之前,确保相关视图已初始化
    // 假设在 MenuUISystem.ShowModsUI 中进行修复
    public void ShowModsUI()
    {