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
- Crashes in the wild on Vulkan in CreateDepthSurfaceImpl
- Position and rotation of a GameObject with Rigidbody reset when it is enabled and moved in the same Update call and the frame rate is low
- “Ignoring depth surface store action as it is memoryless” warnings thrown when Capturing new Snapshot while in Play Mode
- Certain textures are not loaded when using the "Load texture data on demand" feature
- [Android][OpenGL] The 2DLight is disproportionately bright on some Android devices when OpenGLES3 is used
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.