Why are sprites within sprite atlas also loaded seperately into memory on real device?

enter image description here As shown in the above screenshot of a memory profiler snapshot on andoid device, sprites(shown in green box) are actually all packed into sprite atlas(shown in blue box). Is this supposed to be right? If not how can I solve this?

Some details:

  1. I didn’t use Resources folder. Both “Sprites” folder and Sprite Atlas assets exists in folder I created for them, right under Assets.
  2. To get a sprite, I tried return _atlas.GetSprite(key);, or just a reference directly to the Sprite itself public Sprite spriteExample;. The memory snapshot showed almost the same result. Same draw calls, sprites seperately loaded, memory usage are almost the same. Can someone confirm if the second way is correct to use sprite atlas? Thanks!
  3. I know the profiler also profiles Editor related stuff, and this is the reason for most of similar questions I searched online. However my memory snapshot is taken from a real android cellphone.
1 Like

I’ve found the answer myself. On some of the images I used particle system to make it fancier, in which under the shape part, I used the same texture as the emitter’s shape. This caused a duplicate texture in the memory. I don’t have a good solution now, so I just deleted the particle systems. Saving about over 100 MB memory.

Hi there,i have encountered this issue too,but i haven’t use any particle system in my situation.In my game,lots of Image reference sprite,so i think maybe unity automatically load these sprites when loading UI prefab.Is there any way to clear the reference between Image and Sprite?