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/89e39b924fd71a7d6ba6 to your computer and use it in GitHub Desktop.
Save steamb23/89e39b924fd71a7d6ba6 to your computer and use it in GitHub Desktop.
AutoSortingOrder / Licence : MIT
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class AutoSortingOrder : MonoBehaviour
{
public SpriteRenderer targetSpriteRenderer;
public SortingLayer layer;
public int sortingOrder = 0;
public int sortingOrderManagerMinOrder = 0;
AutoSortingOrderManager sortingOrderManager;
// Use this for initialization
void Awake()
{
string objectName = "Auto_" + layer.name + "LayerManager";
GameObject gameObject = GameObject.Find(objectName);
if (gameObject == null)
{
gameObject = new GameObject(objectName);
sortingOrderManager.minSortingOrder = sortingOrderManagerMinOrder;
sortingOrderManager = gameObject.AddComponent<AutoSortingOrderManager>();
//Instantiate(gameObject);
}
else
{
sortingOrderManager = gameObject.GetComponent<AutoSortingOrderManager>();
}
sortingOrderManager.Add(this.sortingOrder, this.targetSpriteRenderer);
}
void OnDestroy()
{
sortingOrderManager.Remove(this.sortingOrder, this.targetSpriteRenderer);
}
}
@steamb23
Copy link
Author

이 스크립트는 아래의 스크립트가 필요합니다.
https://gist.github.com/steamb23/00d5188186d1e218a766

Q. 왜만들었나요?
A.
Sprite Diffuse 매테리얼쓰다가 스프라이트 정렬 순서가 똑같으면 광원에 의해서 겹쳐진 부분이 투영되는 것 때문에 빡쳐서 만들었습니다.

Q. 이 스크립트를 사용하게 되면 어떤 문제가 생기나요?
A.
한 레이어 당 사용가능한 최대 스프라이트 수가 제한됩니다.
이외에 많은 스프라이트 오브젝트를 처리하게 될경우(대략 수만개?) 씬 초기화 시간이 아~주 약간 길어질 수도 있습니다.
모바일에서의 사용은 혹시모르니 자제하시길...

Q. 오브젝트가 파괴될경우 어떤일이 발생하나요?
A.
오브젝트가 파괴되면 매니저에서 제거 과정을 거치게됩니다. 빈 정렬 순서 번호는 오브젝트 추가 작업때 정렬되면서 매꿔집니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment