PERF.SBATCH001

Static Batching pays for draw calls with Combined Mesh memory

Warning Performance Report only — manual fix

Static Batching merges the geometry of renderers marked Batching Static into combined meshes at build time, so they can be drawn with far fewer draw calls. The cost is that the combined geometry is additional to the original meshes — per instance, not per mesh. In a scene with a few hundred static props reusing a handful of models, that difference is large.

What the scan looks at

Two conditions together: Static Batching is enabled for the active build target, and the currently loaded scene(s) contain enough Batching Static geometry for the estimate to matter. The scan never opens or closes your scenes, so this rule reports on what’s open — which is also the scene you’re most likely reasoning about.

Why it matters

This is a trade-off, not a defect, and the finding says so. Static batching cuts draw-call CPU time by spending memory. Whether that’s a good deal depends on which one you’re short of:

  • CPU-bound, memory to spare → keep it. This is why it’s on by default.
  • Memory-bound on mobile → the Combined Meshes may be the largest single item in your Mesh memory, and turning batching off (or unticking Batching Static on the biggest offenders) reclaims it directly.

The signal to look for in a memory capture: Mesh memory dominated by entries named Combined Mesh. That’s this, not your source models — and not PERF.MSH001, which is the other reason mesh memory doubles.

There’s a build-size half too. The combined meshes are baked into the player, so they inflate the shipped build — and Unity’s Build Report attributes them in a way that makes them easy to miss when you’re comparing category totals.

How to fix it by hand

  1. Measure first. Take a memory capture on the target device and check whether Combined Mesh is actually a top item. If it isn’t, leave batching alone.
  2. Targeted: untick Batching Static on the prefabs/instances contributing the most geometry — usually a small number of high-poly props placed many times. You keep batching for the cheap stuff.
  3. Global: Player Settings ▸ Static Batching off. Expect draw calls to rise; measure the frame-time cost before deciding.
  4. Consider GPU Instancing for the un-batched high-instance-count meshes as a middle ground — but check MAT004 first, because instancing and static batching don’t stack the way people assume.

What PerfLint does about it

Report-only, with a number. The finding estimates the extra runtime mesh memory the current scene’s static batching is adding, names the scenes, and states the trade-off — because “turn off static batching” applied blindly is a frame-time regression, and no button should make that call for you.

Check your own project. The scan is free, runs entirely on your machine, and reports this rule with the exact assets that trip it — nothing is uploaded.

Install the free scanner See a sample report


Last reviewed · All rules