Is there a performance benefit to using Sorting Layers for 2D objects versus Z-axis positioning?

I’m setting up a scene in Unity using 2D objects (Sprite Renderers and an Orthographic camera and such) and I noticed that even though I’m only using two sprite atlases I’m getting about 34 draw calls every frame. That seemed odd to me so I started reading up on some optimization techniques and one of the things that kept coming up was the smart utilization of Sorting Layers.

Previously I had set up my scene so that objects were positioned with various Z-axis values to denote how far they were from the camera. So I then set up Sorting Layers to match up to my main slices (background, players, foreground, HUD, etc) and assigned all of my objects accordingly. This resulted in…no change to the number of draw calls.

So what is the correct way of going about this? Organizing objects by GameObjects and Z-axis values is MUCH easier to manage and visualize within the editor. I can definitely see Sorting Layers being used to sort objects that are children of the same parent but is that the only benefit?

What’s the best course of action here and, sub-question, how can I cut down on those draw calls? Thanks for any help you can give.

For me I don’t see any different performance wise. So I just use the method that best suits the situation, I use z-axis positioning for visually structuring my characters, and 2D sorting layers for things like organizing background, player, enemies, etc…

Reducing draw calls comes down to batching your sprites into sprite sheets/atlases. Also, doing animation in the editor itself means less texture space for the equivalent drawings.

I break everything down, e.g. eye_iris,eye_white,eye_line,mouth_line,mouth_teeth,mouth_tongue. everything’s on a single atlas then I animate the pieces in the editor.