Skip to content

Instantly share code, notes, and snippets.

@steamb23
Last active January 13, 2016 16:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save steamb23/00d5188186d1e218a766 to your computer and use it in GitHub Desktop.
Save steamb23/00d5188186d1e218a766 to your computer and use it in GitHub Desktop.
AutoSortingOrderManager / Licence : MIT
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class AutoSortingOrderManager : MonoBehaviour
{
SortedList<int, List<SpriteRenderer>> sortList = new SortedList<int, List<SpriteRenderer>>();
public int minSortingOrder = 0;
bool isStart;
public bool IsStart
{
get
{
return isStart;
}
}
void Start()
{
this.isStart = true;
SortOrder();
}
public void Add(int orderInLayer, SpriteRenderer spriteRenderer)
{
ListAdd(orderInLayer, spriteRenderer);
if (IsStart)
SortOrder();
}
public void Remove(int sortingOrder, SpriteRenderer spriteRenderer)
{
List<SpriteRenderer> spriteRendererList;
if (!sortList.TryGetValue(sortingOrder, out spriteRendererList))
{
return;
}
spriteRendererList.Remove(spriteRenderer);
}
void ListAdd(int sortingOrder, SpriteRenderer spriteRenderer)
{
List<SpriteRenderer> spriteRendererList;
if (!sortList.TryGetValue(sortingOrder, out spriteRendererList))
{
spriteRendererList = new List<SpriteRenderer>();
sortList.Add(sortingOrder, spriteRendererList);
}
spriteRendererList.Add(spriteRenderer);
}
void SortOrder()
{
int i = 0;
foreach (var temp in sortList)
{
List<SpriteRenderer> value = temp.Value;
foreach (SpriteRenderer spriteRenderer in value)
{
spriteRenderer.sortingOrder = i++;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment