Destroy single asset from AssetBundle


I’m trying to destroy single asset (Texture) from AssetBundle. My asset bundle contains 1000+ textures, which are used for custom video player. Basicly I’m itterating throught textures and displaying them to plane and I’m keeping the track of the last loaded texture. When the next texture is loaded I’m destroying the previous one. The thing is, this works great in Editor (Resources.UnloadAsset()), but when I build my game (Windows) the memory does not get released, it just keeps on rising. I have tried Object.Destroy, Object.DestroyImmidiate, Resources.UnloadAsset, Resources.UnloadUnusedAssets. I’ve even tried setting the object value to null and calling the garbage collector but nothing seems to be working.

I have search for the solution on web, and most people have this problem. I get it, you can’t unload single asset from the AssetBundle is the most answer. But I can’t be peace with that this is actually working in editor. The memory gets released and the the number of loaded texture is constant. I’ve tested this and when I remove the Resources.UnloadAsset line in Editor, the memory does not get released (like in builded version).

Do you guys have any advice or idea on how to solve this?

Thank you.

EDIT: I can’t use AssetBundle.Unload() because it unloads the whole AssetBundle and I need to keep the instance alive in order to continue with video playing.

If anyone else encounters this situation, the solution was for some reason when loading the asset asynchronously (AssetBundle.LoadAssetAsync) the memory (texture) does not gets released. This was working in editor because editor is single thread, but in build it was not working. Use AssetBundle.LoadAsset with Resources.UnloadAsset.

I cannot get this to work. Made a request for a direct UnloadAsset() function.
Please upvote so Unity will work on it (if you want the feature).