Need more flexible sorting layers

I am creating an 2D tile system that basically uses voxels to store tile information. A chunk holds tile and layer information. Each chunk in the z axis is a new “world layer” (my own term) like underground or the second story of a house. My problem comes from the fact I want to just define the chunk layers in unity like ground, foliage, walls etc. Then have the world layers dealt with at runtime so everything on a higher world layer renders above the lower. From what I can tell changing the unity layers at runtime is not possible and adding layers by hand for each possible world layer is just silly.

I could use z depth to determine what is visible but that would mean throwing away the sprite renderer and I really don’t want to do that. Looking into Material.renderQueue seems promising but I am not sure exactly how it works and its relationship with with sortin layer.

This one has me a bit stumped and I am not sure if it is even feasible to use the sprite renderer here.

You can use Z-values and the camera’s Z-value to exclude Sprites from rendering just fine. It won’t control the order they render - you need SortingLayer for that - but it can prevent them from rendering at all.

So, if you use SortingLayer/SortingOrder and corresponding Z-values to design your world, you can scroll “down” in it by setting the camera’s Z-value.