Unity出现SerializedObjectNotCreatableException等报错咨询
Unity 跨项目动画相关编辑器报错修复
问题特征
- 报错无对应自定义脚本代码行指向
- 首次触发场景:为角色添加动画后,删除动画资源并将其从Animator控制器中移除后开始出现报错
- 清空Hierarchy层级面板所有对象、删除Assets目录下所有导入的包资源后,报错仍然存在
- 报错出现后,同一设备上打开其他Unity项目也会触发相同报错
- 使用引擎版本为 Unity 2021.3.2f1 Personal,两类报错均会重复显示2次
报错堆栈
SerializedObjectNotCreatableException: Object at index 0 is null UnityEditor.Editor.CreateSerializedObject () (at :0) UnityEditor.Editor.GetSerializedObjectInternal () (at :0) UnityEditor.Editor.get_serializedObject () (at :0) UnityEditor.BaseAssetImporterTabUI.get_serializedObject () (at :0) UnityEditor.ModelImporterClipEditor.UnregisterListeners () (at :0) UnityEditor.ModelImporterClipEditor.OnDisable () (at :0) UnityEditor.ModelImporterEditor.OnDisable () (at :0) InvalidCastException: Specified cast is not valid. UnityEditor.AssetImporters.AssetImporterEditor.InitializePostprocessors () (at :0) UnityEditor.AssetImporters.AssetImporterEditor.OnEnable () (at :0) UnityEditor.AssetImporterTabbedEditor.OnEnable () (at :0) UnityEditor.ModelImporterEditor.OnEnable () (at :0)
根因说明
报错全部来自Unity内置的模型导入器编辑器逻辑,属于编辑器本地配置损坏问题,和项目内资源、自定义脚本无关。
删除动画资源时如果Inspector面板正停留在对应模型/动画的导入设置页,编辑器未正确释放已删除资源的空引用,损坏的面板状态被写入Unity全局编辑器缓存,后续所有项目只要触发模型导入器面板绘制就会抛出异常。
修复操作
- 完全关闭所有正在运行的Unity编辑器进程
- 删除Unity全局编辑器缓存内的损坏配置:
- Windows平台:进入
C:\Users\<当前系统用户名>\AppData\Roaming\Unity\Editor-5.x路径,删除InspectorDopeSheetSettings.xml、LastSelectedLayout.dwlt两个文件,找不到对应文件可直接清空整个目录,不会影响任何项目资源 - Mac平台:进入
~/Library/Preferences/Unity/Editor-5.x路径,删除上述同名文件
- Windows平台:进入
- 重新打开Unity编辑器,选中任意带动画的模型资源,切换到Animation导入配置页确认报错消失
- 若仍有残留报错,执行菜单栏
Window -> Layouts -> Revert Factory Settings重置编辑器默认布局,清空所有面板状态缓存即可完全修复
内容的提问来源于stack exchange,提问作者Daniel Lip
相关产品推荐
相关产品推荐

