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
- UnityLinker causes crash when outputting snapshot data for very large projects
- Camera Preview does not detect multiple cameras with same GameObject name
- Crash on TypeTreeIterator::Children() when renaming a corrupted asset while Asset Serialization is set to Mixed
- Cameras (Camera.targetDisplay) render only to Display 0 in the Player when Multi-Display setup is used and DX12 API is set
- [Vulkan] _CameraOpaqueTexture produces a feedback effect on Android Adreno devices when using Vulkan
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.