The answer is to addChild in order keeping same spritesheet sprites together, or if you need sprites to layer between each other then you can look into using the depth buffer and giving the sprites correct “layering” by setting their
setPositionZ and then making sure you addChild all the sprites together by sprite sheet.
For more info:
Yep, without changing the engine, the order of adding children into the scene hierarchy (including the levels of child “levels”) matters with how the auto-batching system works.
1st main question: are you actually seeing performance issues on your target minimum device? While reducing draw calls is important, if you don’t need more than 2 or 3 of these spritesheets rendered at any given time then you probably don’t need to worry too much.
2nd less important Q: have you determined how much memory your target minimum device has for textures and if so even if you think it is wasteful you may want to consider using a single 2048x2048 or even 4096x4096 texture if all of your sub-spritesheets can fit into this larger one (which is even easier if you just texture pack all of the frame images together to allow for further packing).
The point here is that you need to care about performance and optimization, but you should also consider how much capability your target devices have to utilize.
If you are writing desktop only game, for example, you can look into 2D Texture Arrays, and on mobile if you’re able to customize the OpenGL startup code and otherwise enable GL ES 3.0.