Sorting

Controlling render order of the NSliceSpriteRenderer

Sorting

The rendering order of objects is crucial in 2D games. NSliceSpriteRenderer uses Unity's standard Sprite Sorting system to control rendering order.

Sorting System Overview

In Unity's 2D rendering, rendering priority is determined in the following order:

  1. Sorting Layer (highest priority)
  2. Order in Layer (within the same Sorting Layer)
  3. Z Position (distance from camera)

Sorting Layer

Configuration

  • Dropdown Menu: Select from a list of predefined Sorting Layers
  • Default Value: "Default"
  • Add Layer Button: Allows you to add new Sorting Layers

Performance Considerations

Draw Call Optimization

Objects with the same Sorting Layer and Order in Layer:

  • Can be batched when using the same texture
  • Reduces draw calls to improve performance

Recommendations

  1. Minimize Layers: Create only as many Sorting Layers as needed
  2. Use Gaps in Order: Use gaps like 10, 20, 30... to allow for future insertions
  3. Maintain Consistency: Apply consistent layering rules throughout your project

Setting via Script

1using UnityEngine;
2
3public class SortingController : MonoBehaviour
4{
5    private NSliceSpriteRenderer nSliceRenderer;
6    
7    void Start()
8    {
9        nSliceRenderer = GetComponent<NSliceSpriteRenderer>();
10        
11        // Set Sorting Layer
12        nSliceRenderer.SortingLayerName = "UI";
13        // Or set by ID
14        nSliceRenderer.SortingLayerID = SortingLayer.NameToID("UI");
15        
16        // Set Order in Layer
17        nSliceRenderer.SortingOrder = 10;
18    }
19    
20    // Dynamically change rendering order
21    public void BringToFront()
22    {
23        nSliceRenderer.SortingOrder = 100;
24    }
25    
26    public void SendToBack()
27    {
28        nSliceRenderer.SortingOrder = -100;
29    }
30}