Object reference not set to an instance of an object NullReferenceException: Obj...
错误信息
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.ShowModsUI → PdxModsUI.Show → MenuUISystem.ShowModsUI)表明:是游戏菜单系统触发了ModsUI的显示逻辑。ModsUIView 类在执行 Show 方法时,内部的UI元素、数据源、依赖组件或初始化状态存在null值。可能的缺失对象:
ModsUIView 实例本身未正确实例化。ModsUIScreen 实例或相关UI控件未初始化。ModsUIView 创建失败。3. 💡 解决方案
需要对 PDX.ModsUI.ModsUIView.Show 方法的调用链进行空值检查,确保在调用前所有必要对象已正确初始化。
修复后的代码(基于调用链逻辑补充空值校验)
```csharp
// 在调用 ShowModsUI 之前,确保相关视图已初始化
// 假设在 MenuUISystem.ShowModsUI 中进行修复
public void ShowModsUI()
{