You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity含枚举类型的自定义类列表序列化异常求助

Unity Inspector序列化含枚举的自定义类列表异常排查方案

问题概述

在Unity Inspector中序列化包含PlayerOptionType枚举的自定义类列表时,添加类实例后列表从Inspector消失,控制台循环输出NullReferenceException,首次抛出错误为:

NullReferenceException: SerializedObject of SerializedProperty has been Disposed.

相同代码在新Unity项目中可正常运行,当前项目存在额外因素导致序列化失败,已尝试公开字段、添加无参构造函数、设置枚举默认值、给枚举添加[Serializable]标签等方法,均未解决问题。

排查步骤

  • 检查自定义Editor/PropertyDrawer脚本
    若项目中存在针对PlayerOption类或其基类(Base/ItemBase)的自定义Editor脚本、PropertyDrawer,大概率是这类脚本在处理序列化属性时逻辑错误,比如提前释放SerializedObject、未对空属性做判空处理。可暂时禁用这些自定义脚本,验证是否恢复正常。

  • 清理Unity序列化缓存
    关闭Unity,删除项目根目录下的Library文件夹,重新启动项目让Unity重新生成序列化缓存。旧缓存的残留数据可能引发序列化逻辑冲突。

  • 排查序列化冲突项

    • 检查是否存在同名类/同名枚举(包括不同命名空间但Inspector识别冲突的情况)
    • 确认PlayerOption类及父类中无无法序列化的字段:比如接口实例、未标记[Serializable]的嵌套类、误用[NonSerialized]标签的需要序列化字段
  • 验证场景/预制体完整性
    若问题出在特定场景或预制体,创建新的空GameObject并挂载包含该列表的组件,测试是否能正常序列化。若新对象正常,说明原场景/预制体的序列化数据损坏,需重新创建对象并迁移数据。

  • 检查Unity版本兼容性
    确认当前项目与测试用新项目的Unity版本是否一致,部分Unity版本存在特定序列化Bug,可尝试升级/降级至稳定版本测试。

  • 排查第三方插件干扰
    暂时禁用项目中的第三方插件(尤其是涉及序列化、Inspector扩展的插件),逐一排查是否为插件导致的序列化冲突。

内容的提问来源于stack exchange,提问作者Istalri Skolir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:12:07