Search Issue Tracker
By Design
Votes
0
Found in
2020.1.0a1
2020.3
2021.2
2021.2.7f1
2022.1
2022.2
Issue ID
1399713
Regression
Yes
Asset in Editor Default Resources fails to load on startup when using AssetPostprocessor and InitializeOnLoad on said asset
Reproduction steps:
1. Open the user attached "LoadBug.zip" project
2. Notice the "Unable to find required resource at flag-nl.png" error in the Console
3. Reimport Assets/Editor/MyPostprocessor.cs and reopen the project
4. Notice that the "Unable to find required resource at flag-nl.png" error does not occur
5. Select Assets/Editor Default Resources/flag-nl.png
6. In the Inspector set "Texture Type" to "Normal map" (trigger the Postprocessor)
7. Apply and reopen the project
8. Observe the Console
Expected result: No errors are logged
Actual result: The "Unable to find required resource at flag-nl.png" error is logged again
Reproducible with: 2020.1.0a1, 2020.3.27f1, 2021.2.10f1, 2022.1.0b6, 2022.2.0a3
Not reproducible with: 2019.3.0a12, 2019.4.35f1
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
- Shader Graph Asset icon is not shown on creation unless you confirm the name
- APV Sky occlusion doesn't consider the terrain
- [iOS] "EXC_BAD_ACCESS" Player crash when Script Debugging is enabled
- Cursor skips input fields when tabbing between two sets of input fields
- "Shader error redefinition of 'Varyings'" error appears when selecting the shader
Resolution Note (2022.2.X):
While this appears to be a regression in behaviour, it actually relates to a deliberate bug fix.
Previously, postprocessors with a version number of 0 (such as the one in this repro) were ignored when creating the internal hash for postprocessors, which was a bug that was fixed.
In this case, the [InitializeOnLoad] callback is fired before the custom postprocessor is registered, so the asset is unavailable.
Previously the asset was available, but because the postprocessor was not registered, it was probably not functioning as expected.
Because [InitializeOnLoad] is triggered when there is a domain reload, which can happen during an import, it's not guaranteed that all assets will be imported (and therefore loadable) because of dependencies such as these.
To load the texture when it is known to be imported and loadable, one can use OnPostprocessAllAssets() or EditorApplication.delayCall instead.