SpriteRenderer bgRenderer = backgroundGameObject.GetComponent<SpriteRenderer>(); SpriteRenderer fgRenderer = foregroundGameObject.GetComponent<SpriteRenderer>(); // Background layer order Debug.Log($"Background layer order: {bgRenderer.sortingOrder}"); // Foreground layer order Debug.Log($"Foreground layer order: {fgRenderer.sortingOrder}");
Unity draws objects based on their sorting layer order first. The "Foreground" layer is above "Background" by default, so the Foreground object appears on top even if its sortingOrder is lower.
spriteRenderer.sortingOrder = 10;
Debug.Log(spriteRenderer.sortingOrder);sortingOrder is a writable property. Setting it to 10 changes the order immediately.
int result = spriteRendererA.sortingLayerID.CompareTo(spriteRendererB.sortingLayerID);
Debug.Log(result);sortingLayerID is an integer. CompareTo returns 0 if equal, positive if the first is greater, negative if smaller.
If sorting layers and orders are the same, Unity uses the Z position to decide draw order. Lower Z means closer to camera and drawn on top.
UI Canvases respect sorting layers and orders. Assigning a sorting layer above all sprite layers and a high sortingOrder ensures UI is always drawn on top.
