Search Issue Tracker
By Design
By Design in 2023.1.X
Votes
0
Found in
2020.3.38f1
2021.3.6f1
2022.1.13f1
2022.2.0b4
2023.1.0a5
Issue ID
UUM-11702
Regression
No
Serialized variable is not updated in the Editor when changing it while the Editor is closed
Reproduction steps:
1. Open the attached ‘TestDidReloadScripts' project
2. Observe the ‘Assets/Editor/Config/EditorConfig.asset’ in the Inspector, note that ‘Value’ is 0
3. Close the Editor
4. Change the 'Value’ in any external text editor
5. Open the project
6. Observe the ‘Assets/Editor/Config/EditorConfig.asset’ in the Inspector
Actual result: ‘Value’ is still 0
Expected result: ‘Value’ is changed
Reproducible with: 2020.3.38f1, 2021.3.6f1, 2022.1.13f1, 2022.1.0b4, 2022.2.0a5
Reproduced on: MacOS 11.6 (Intel)
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
- Performance Markers Search window shows an empty entry in the list
- Enabling Deep Profiling in Performance Markers Search window breaks Inspector panel buttons when navigating through the marker items
- Dragging selector from selector row background shows preview but does not apply class in UI Builder
- An "InvalidOperationException" error is thrown when TryRemoveItem is used with rebuildTree set to false
- Build fails with IL2CPP error when building on Android platform in a specific project
Resolution Note:
Now, I want to explain why AssetDatabase V2 returns null and ABDV1 does not.
The issue at hand here is consistency. In the scenario you describe, InitializeOnLoadMethod gets called when the editor is booting up. This is analogous to:
1. Modifying a C# script
2. Modifying an asset
3. Calling refresh so both changes are picked up.
So, if we do try that out using ADBV1, in 2018.3, I can show you the biggest problem.
In this case, I have a texture (test_texture.png) and its dimensions are 256x128 pixels
If I:
1. Modify a C# script
2. Change the Dimensions to be something else (i.e. 256x256)
3. Let Auto-Refresh run
You can see that inside the InitalizeOnLoad call, the dimensions get printed and they're not what's on disk!!!
This is because the asset has not been imported yet, and so the last known version of the asset is what ends up getting loaded. This can cause a large number of issues, since you're essentially getting out-of-date data back.
In ADBV2 we make sure to return NULL as a way to tell you that the asset is not available and we know its modified, thus preventing out of date data from being returned until it has been imported.
This is definitely a behaviour change, but for the sake of consistency we chose to do this when ABDV2 was designed.
I have a GIF available here showing what happens: https://forum.unity.com/threads/what-is-asset-database-v2.680170/#post-7638085
Resolution Note (2023.1.X):
Now, I want to explain why AssetDatabase V2 returns null and ABDV1 does not.
The issue at hand here is consistency. In the scenario you describe, InitializeOnLoadMethod gets called when the editor is booting up. This is analogous to:
1. Modifying a C# script
2. Modifying an asset
3. Calling refresh so both changes are picked up.
So, if we do try that out using ADBV1, in 2018.3, I can show you the biggest problem.
In this case, I have a texture (test_texture.png) and its dimensions are 256x128 pixels
If I:
1. Modify a C# script
2. Change the Dimensions to be something else (i.e. 256x256)
3. Let Auto-Refresh run
You can see that inside the InitalizeOnLoad call, the dimensions get printed and they're not what's on disk!!!
This is because the asset has not been imported yet, and so the last known version of the asset is what ends up getting loaded. This can cause a large number of issues, since you're essentially getting out-of-date data back.
In ADBV2 we make sure to return NULL as a way to tell you that the asset is not available and we know its modified, thus preventing out of date data from being returned until it has been imported.
This is definitely a behaviour change, but for the sake of consistency we chose to do this when ABDV2 was designed.
I have a GIF available here showing what happens: https://forum.unity.com/threads/what-is-asset-database-v2.680170/#post-7638085