- Home /
iOS crash with "Memory pressure" error - too many sprites?
Hi guys, I think I'm doing something very wrong. Been Googling a day straight without cracking this issue, hope someone can help!
I have 42 PNG's totaling 12 MB, downloaded to Application.persistentDataPath.
At startup, I try to load the PNG's into a Sprite Dictionary, for later display on a ScrollRect with a horizontal layout. The sprite dictionary also serves as easy way for me to access the sprites in other places.
Works fine on Android, but on iOS the app crashes while loading the PNG's. I can see the memory usage going nuts via. XCode, it goes from ~40 MB to about 300 MB where it crashes and burns with a "Memory pressure" error.
Here's how I'm loading the files (C#):
Dictionary<int, Sprite> product_sprites_by_nid = new Dictionary<int, Sprite>();
foreach (Product product in products) {
byte[] bytes;
bytes = File.ReadAllBytes(Application.persistentDataPath + "/" + product.photo.filename);
Texture2D texture = new Texture2D(1, 1);
texture.LoadImage(bytes);
texture.Compress(false);
Sprite sprite = new Sprite();
sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0, 0), 100.0f);
product_sprites_by_nid[product.nid] = sprite;
}
Have also tried loading via the WWW class and creating the sprite with www.texture, but still memory crash occurs.
Also tried to use different compressions when creating the texture, e.g. "new Texture2D(1, 1, TextureFormat.DXT5, true)
", but no matter which I use, Unity throws lots of weird errors.
Are there any other ways or best practices of achieving what I'm trying to do? Maybe I shouldn't be using sprites at all? Maybe I shouldn't try to load them all for easy access?
Any help is greatly appreciated! :)