How to solve the issue of TextMeshPro breaking batching in a card list

I have a Grid Layout with many cards. Each card consists of a background image, a foreground image, and a TextMeshPro text. I’ve found that during rendering, the presence of TextMeshPro prevents batching, causing draw calls (SetPass calls) to spike. What should I do about this?

There’s two workable solutions that I know of:

  • hierarchy organization
  • bake the cards

If you design the hierarchy so that you have all backgrounds, foregrounds, and texts in their own respective parent, they will be able to batch.

But considering that card games rarely change their text you could render each card to a single image (bg+fg+text). This creates more textures and higher VRAM usage but keeps the draw calls down, especially if you can put those cards into a sprite atlas.