- Home /
How to Remove Textures from Memory (Downloaded During Play)
Hello!
I have a little project that uses photos downloaded from a server as textures for each game level. The object stays the same, but each level downloads a smallish 100-400Kb jpg image.
While looking at the profiler in XCode, running the app on the iPad, it's obvious that each time an image is downloaded, memory usage increases 20-30Mb. After about 7 images, the app will quit (receiving memory warnings along the way).
How can I free up the memory after I'm done with each image (texture) I've downloaded? I don't see the textures in the hierarchy during gameplay in Unity, so I'm not sure how to reference them for Destroy.
Thanks for any help!
Answer by infinitypbr · Dec 20, 2012 at 03:20 AM
I've answered my own question, and of course the answer is simple.
On the script attached to the object, when it's time to switch, before loading a new texture etc, I simply added:
Destroy (renderer.material.mainTexture);
Now system memory goes up just 5MB per load, rather than 20-30. There's still an issue it seems, but it's not as bad at this point.
Try using
Resources.UnloadAsset(yourTexture);
I think this might help you.
Are you sure Resources.UnloadAsset will be working with content downloaded from a server? $$anonymous$$y interpretation of the documentation was that this particular method would only work for Assets loaded from the Resources folder.
i implement this, and reduce my apps memory greatly, as in my apps users may swipe to some images that requested to server. thanks!.
Answer by Mgayar · Sep 13, 2018 at 01:16 AM
For my case, calling that helped: Resources.UnloadUnusedAssets();
Answer by drudiverse · Dec 13, 2015 at 10:17 PM
check out the best compression for images in unity... perhaps //cube.renderer.material.mainTexture = new Texture2D(4, 4, TextureFormat.DXT1, false);
Answer by kxqnjy · Jan 21, 2019 at 03:08 PM
A similar issue happened, my Android phones at most support 4GB memory per app using it. But for one of my Unity project, it requires at most 7GB memory, and yes, most of the memory usage is because the texture loaded in the memory. But now I am wondering if two objects are using the same texture, will the memory usage be twice of the one object case? Or just be twice?
Your answer
Follow this Question
Related Questions
Sprite-based animation - mobile memory issue 0 Answers
How to have 2 sets of textures and make sure only one is loaded? 0 Answers
Textures suddenly failing to load on iOS during long session 0 Answers
Some textures don't load on iOS 0 Answers
reading a texture that was created via script runtime and not saved 1 Answer