Search Issue Tracker
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.
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.
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
- Memory leaks and Editor crashes/freezes when using decimal values in Gizmos
- "The page you were looking for doesn't exist" message appears when trying to Sign in using Unity Hub/Editor
- [Regression] Enviroment lighting is broken in the 2017.4.27f1 version
- Usymtool does not support arm64e
- [Addressables] Exception is thrown when accessing AssetReference.Asset before the asset is loaded