Search Issue Tracker
Fixed in 2018.1.X
Votes
1
Found in
2017.1.0p4
Issue ID
946988
Regression
Yes
SceneManager.sceneUnloaded gets called when interacting with objects using materials in Editor
Steps to reproduce:
1.Open attached ‘sceneunloaded.zip' Unity project
2.Enter Play mode
3.Select ‘Cube’ object in Hierarchy
4.Select any different object in Hierarchy
Expected results:
Nothing unusual happens
Actual results:
SceneManager.sceneUnloaded function is called and a Debug message is displayed in Console
Reproduced in: 2017.3.0a6, , 2017.2.0b10, 2017.1.1f1, 2017.1.0f1, 2017.1.0b2
Didn’t reproduce in: 2017.1.0b1, 2017.1.0a1, 5.6.3p2, 5.5.4p4
Regression introduced in: 2017.1.0b2
Note: The function is called twice when MeshRenderer/SpriteRenderer/etc material is changed. Updating of materials might be the cause of this issue.
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- [Dragon Crashers] Build fails in U6
- [Dragon Crashers] 4 Shader error messages on import
- [Dragon Crashers] Readme text is white on light grey
- Cursor stays in front of the first character when entering text in the TextMeshPro field
- Searching in Hierarchy causes unwanted component calls
Arkade
Jan 25, 2018 12:45
I'm seeing this in 2017.3.0f3. It isn't completely clear which version the "hotfix" went into. Also no link to the hotfix here or in the linked thread that I could find. (sorry if I'm being blind)
JimHL
Dec 13, 2017 03:17
Edit: It's not work!, select to particle and it's still fire the bug!
JimHL
Dec 13, 2017 03:04
Hot fix by @hatsuko work like a charm! Thanks!
Peter77
Dec 07, 2017 08:05
Related forum thread:
https://forum.unity.com/threads/scenemanager-sceneunloaded-gets-called-in-editor-when-selecting-materials.491999/
Hatsuko
Dec 02, 2017 14:14
In case somebody needs it
void OnSceneUnloaded (Scene scene) {
#if UNITY_EDITOR
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
System.Diagnostics.StackFrame sf = st.GetFrame(st.FrameCount-1);
if (sf.GetMethod().Name == "OnDisable") { // Or sf.GetMethod().DeclaringType == typeof(UnityEditor.MaterialEditor)
Debug.Log("Bug!");
return;
}
#endif
Debug.Log("Do something...");
}