How Do You Optimize 2D Game Performance for Mobile in Unity?

Hi Unity Community,

I’m developing a 2D game in Unity for mobile, but I’m hitting performance issues like lag and high battery drain. Any tips for optimization?

Details:

  • Setup: Indie developer, using Unity 2023.2 (LTS) for a 2D puzzle game targeting iOS/Android (2025). ~50 sprites, basic animations.
  • Context: Following Unity’s optimization guides, I’ve reduced draw calls, but performance still lags on mid-range devices.
  • Steps Tried:
    • Used Sprite Atlas to batch sprites.
    • Lowered texture resolutions and enabled compression.
    • Disabled unused scripts and reduced physics calculations.
  • Goal: Achieve 60 FPS on mid-range mobile devices with minimal battery drain.

Questions:

  • What are your go-to techniques for optimizing 2D game performance in Unity?
  • How do you balance visual quality with mobile performance?
  • Any specific Unity tools or settings for mobile optimization?
  • For those with smooth-running 2D mobile games, what’s your approach?

Thanks for your insights!

The Profiler

You need to know what is causing the performance issue. I don’t see any reason why a few dozen animated sprites shouldn’t run at 60 fps even on low-end mobile devices.

But since you mention physics, that can be taxing especially if there are continuous contacts between many bodies.

If the profiler tells you that a significant portion of time is spent in physics, check the Physics settings. More often than not, specifically for a puzzle game, you can reduce the number of iterations and still have physics that work good enough.

You could also check Time settings and see if you can reduce the fixed timestep (default 0.02 = 50 Hz). Maybe you can work with 0.05 (20 Hz) for a puzzle game. However changing that value requires tweaking physics settings and forces applied.

You probably meant 2022.3 LTS because 2023.2 is not an LTS (that would be Unity 6.0).

Crunch compression only reduces size on disk. In the past it had the potential to be a load time optimization because mobile storage was often way slower than the CPU, but it was never an optimization from a performance standpoint unless you were waiting on the asset to load as it requires the CPU do the decompression work before it’s sent to the GPU.

I’m primarily contracted for 3D games but I’m typically the one working with UIs, and my first thought is almost always some form of upscaling simply because most mobile devices have way higher resolutions than is sensible for a game. For example I’m currently working with iOS and the resolutions on these 4.7-inch to 12.9-inch devices are higher than my 25-inch and 27-inch monitors.

If you’re working with the universal render pipeline as opposed to the built-in render pipeline you should take the time to look through the render pipeline asset and verify that features you don’t need aren’t enabled. Unity defaults to having features on that are often unnecessary for mobile games. For example you don’t need terrain holes on a 2D game.