Quick answer: Pack all tile sprites into a single Sprite Atlas. Set TilemapRenderer Mode to Chunk. Every tile in a chunk now batches into one draw call.
Profiler shows 200+ draw calls just for the Tilemap. Tiles come from 30 different sprite files. Without an atlas, each distinct texture forces a new batch.
The Symptom
Frame Debugger shows many short Tilemap draws. SetPass calls climb with tile variety. Mode = Chunk doesn’t reduce the count.
The Fix
Step 1: Sprite Atlas. Right-click Project → Create → 2D → Sprite Atlas. Add the folder of tile sprites as Objects For Packing. Pack settings: Block Offset 1, Padding 4 (prevents bleed). Build the atlas.
Step 2: TilemapRenderer Mode = Chunk.
TilemapRenderer Inspector:
Mode: Chunk
Detect Chunk Culling Bounds: Auto
Sort Order: Bottom Right (or your preference)
Material: Sprite-Default (or one shared by all tiles)
Step 3: Single shared material. Every tile must use the same Material. Override only if you have very few exceptions; one-off materials kill batching.
Per-Tile Sort
Need foreground/background tiles in the same Grid? Add separate Tilemap layers (each is one Chunk batch) and set Sort Order on each. Trees-foreground at higher Sort than ground-background.
Verifying
Frame Debugger after the change. Tilemap draws collapse to one or a handful per chunk. SetPass calls drop. Stats overlay confirms.
“Atlas. Chunk. Shared material. Tilemap batches.”
Related Issues
For TilemapCollider edges, see collider edges. For Rule Tile corners, see Rule Tile.
Atlas plus Chunk plus shared mat. One draw per chunk.