Null reference when dynamically loading a scene
I created an object inheriting SerializedMonoBehaviour, and a button on it loads another scene and closes the current one, When the button is hit and the new scene is loaded, the following exceptions are raised:
NullReferenceException: SerializedObject has been Disposed Sirenix.OdinInspector.Editor.InspectorUtilities.EndDrawPropertyTree (Sirenix.OdinInspector.Editor.PropertyTree tree) (at C:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Core/Infos/InspectorPropertyInfo.cs:507) Sirenix.OdinInspector.Editor.PropertyTree.Draw (Boolean applyUndo) (at C:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Utilities/Persistent/PersistentContextCache.cs:183) Sirenix.OdinInspector.Editor.OdinEditor.OnInspectorGUI () (at C:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Misc/DrawerPriority.cs:380) UnityEditor.InspectorWindow.DrawEditor (UnityEditor.Editor[] editors, Int32 editorIndex, Boolean rebuildOptimizedGUIBlock, System.Boolean& showImportedObjectBarNext, UnityEngine.Rect& importedObjectBarRect) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:1240) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
Do I do something wrong?
Comments (4)
-
-
- attached OdinProject.zip
-
- changed status to wontfix
Upon looking closer at this issue, it's not something we can really fix. Part of the problem is Unity itself breaking in a way we can't really do anything about.
Essentially, what you should be doing instead is changing the scene in a delayed callback, and not from the middle of the GUI drawing process:
EditorApplication.delayCall += () => { EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single); Selection.activeObject = this; };
-
Ok I will use a delayed callback ! Thanks
- Log in to comment
Hello, I'm have same problem on a ScriptableObject.
Description :
Result :
2 errors - see this attached Unity project for reproduction and fullstack error.
NullReferenceException: SerializedObject has been Disposed Sirenix.OdinInspector.Editor.InspectorUtilities.EndDrawPropertyTree (Sirenix.OdinInspector.Editor.PropertyTree tree) (at C:/Sirenix/Sirenix
InvalidOperationException: Operation is not valid due to the current state of the object System.Collections.Stack.Pop () (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections/Stack.cs:329)