A 아틀라스 (a1, a2 스프라이트)
B 아틀라스 (b1 스프라이트)
위와 같이 아틀라스 및 스프라이트가 있을때,
!! 하나의 Panel 안에서 a1 - b1 - a2와 같은 식으로 출력하는 것은 불가능 하다고 한다. !!
z값은 동일 아틀라스내에서 스프라이트 간 출력 우선순위를 결정하는데 영향을 끼치지만,
서로 다른 아틀라스사이에서 스프라이트 간 출력 우선순위 결정에는 영향을 끼치지 못한다고 한다.
서로 다른 아틀라스간 출력은 각 아틀라스내에서 z값이 가장 작은 것 부터 출력 된다고 한다.
(아틀라스 간에 우선 순위는 해당 아틀라스 아래 스프라이트가 갖는 가장 작은 z값이 기준이고, 동일 아틀라스 내에서는 스프라이트 우선순위는 z값)
즉, a1(positoin.z=-10) -> b1(position.z=0) -> a2(position.z=10) 이란 가정하에 보면
실제로는 a1 -> a2 -> b1 순으로 출력이 된다는 것이다.
a1 스프라이트가 제일 작은 z값을 가지고 있으므로 아틀라스 우선 순위는 A 아틀라스 이고 z값이 제일 작기 때문에 첫번째.
a2 는 A 아틀라스 소속이자, a1 다음으로 작은 z값을 가지고 있기 때문에 두번째.
b1 는 그다음 우선 순위인 B 아틀라스 소속이고 z값이 제일 작기 때문에 세번째.
정리하면 그래서 b1이 두번째에 출력되게 하고 싶어도 a1,a2에 가려지거나 혹은 depth나 z값을 이리저리 조정하다보면 b1이 제일 앞에 있다거나 이상한 현상이 발생 된다는 것이다.
그래서 해결책이 새로운 panel을 만드는것이다. 여러가지 경우가 잇겠지만 예를 들어보면,
1) Panel1(a1 - b1) + Panel2(a2)
2) Panel1(a1) + Panel2(b1 - a2)
이런식으로 하면 본래 의도되로 될 수 있다는 것이다.
폰트를 사용하는 UIlabel 같은 경우에도 다이나믹 폰트나 이런것들로 인해 기능과 관리면에선 편하지만 폰트 또한 리소스들 아틀라스와 다른 아틀라스이기 때문에 위와 같은 현상이 발생 할 수 있다는 점에서 유의 하면서 사용 해야 할 듯 하다.
그리고 패널을 추가하게되면 드로우콜이 늘어나는데, 그렇다고 무작정 패널을 나뉘어 분류 안하는것 보단 해주는게 좋은거 같고, 또 과하게 패널을 또 분류하면 그만큼 드로우콜이 늘어나니 적절한 선에서 패널도 추가하여 사용해야 할 것 같다.
'Unity' 카테고리의 다른 글
유니티(Unity)(C#) 개발하면서.. 몰랏던거나 유용하거나 자주쓰일것 같은.. 것들 정리中 (0) | 2018.02.08 |
---|---|
유니티(C#) 잡다한.. 최적화 기법.. 정리中 (1) | 2018.02.05 |
유니티랑 nodejs 간단 연동 테스트 해보기. (1) | 2016.10.31 |
[펌] 유니티 리소스들 최적화 TIP (0) | 2016.08.04 |
[펌] 유니티 최적화 배칭, 드로우콜 (0) | 2016.08.04 |