Last active
January 13, 2016 16:15
-
-
Save steamb23/89e39b924fd71a7d6ba6 to your computer and use it in GitHub Desktop.
AutoSortingOrder / Licence : MIT
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
이 스크립트는 아래의 스크립트가 필요합니다.
https://gist.github.com/steamb23/00d5188186d1e218a766
Q. 왜만들었나요?
A.
Sprite Diffuse 매테리얼쓰다가 스프라이트 정렬 순서가 똑같으면 광원에 의해서 겹쳐진 부분이 투영되는 것 때문에 빡쳐서 만들었습니다.
Q. 이 스크립트를 사용하게 되면 어떤 문제가 생기나요?
A.
한 레이어 당 사용가능한 최대 스프라이트 수가 제한됩니다.
이외에 많은 스프라이트 오브젝트를 처리하게 될경우(대략 수만개?) 씬 초기화 시간이 아~주 약간 길어질 수도 있습니다.
모바일에서의 사용은 혹시모르니 자제하시길...
Q. 오브젝트가 파괴될경우 어떤일이 발생하나요?
A.
오브젝트가 파괴되면 매니저에서 제거 과정을 거치게됩니다. 빈 정렬 순서 번호는 오브젝트 추가 작업때 정렬되면서 매꿔집니다.