Search Issue Tracker
By Design
Votes
13
Found in
5.6.1p3
Issue ID
926907
Regression
No
Resources.UnloadUnusedAssets unloads textures that are only referenced by MaterialPropertyBlocks
When using a MaterialPropertyBlock to set a texture for a material, if the texture not referenced somewhere else, it gets unloaded when calling Resources.UnloadUnusedAssets.
Steps to reproduce:
1. Open the scene MaterialPropertyBlock.unity
2. Enter Play Mode
3. Note that the texture on the cube is loaded at runtime
4. Press Space to call Resources.UnloadUnusedAssets
Result: Note that the cube turns to black.
Note: Removing the [PerRendererData] attribute from the _MainTex property of the ShaderTest shader shows how after unloading unused assets the texture used by the material becomes null.
Reproduced with: 2017.2.0b2, 2017.1.0f2, 5.6.2p2, 5.5.4p1.
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
- Trail Renderer visual doesn't match the positions of vertices when they have been offset
- [Mobile] The Material is not visible when using the Decal Renderer Feature
- Uncaught TypeError: Cannot read properties of undefined is thrown when the tab is inactive for several minutes
- Crash on mono_array_length when building a project
- "StackOverflowException" error when changing spline curve type from "Bezier" to "Auto" in the "Element Inspector"
Resolution Note:
ShaderPropertySheet is volatile data/unserialized data and therefore can't be tracked easily. The workaround is to either keep a dummy material reference in the scene or reuploading the texture to GPU upon calling UnloadUnusedAssets.