Unity / C#
Intermediate
Unity 2021.3+ / Unity 6
2D Sprite Atlas 패킹과 Sorting Layer · SortingGroup 드로우콜(Draw Call) 최적화
개별 텍스처로 인해 깨지는 스프라이트 배칭 복구, Sprite Atlas 패킹 세팅, 다중 부품 캐릭터의 렌더 순서 꼬임을 방지하는 SortingGroup 가이드.
#Unity #2D #SpriteAtlas #DrawCalls #SortingGroup #Optimization
핵심 개념화면에 2D 스프라이트가 수백 개 있어도, 같은 텍스처 아틀라스와 동일한 머티리얼을 공유한다면 단 1회의 드로우콜(Draw Call / Batched SetPass)로 렌더링할 수 있습니다. 텍스처 패킹(
Sprite Atlas)과 정렬 레이어(SortingGroup)를 전략적으로 설계하면 모바일 및 저사양 PC에서 프레임 레이트를 2배 이상 끌어올릴 수 있습니다.1. 2D 배칭 파괴 원인과 해결책
| 원인 | 발생 현상 | 해결 방법 |
|---|---|---|
| 텍스처 분리 | 스프라이트마다 별도의 고유 텍스처를 바인딩하여 드로우콜 급증 | 동일 챕터/캐릭터 스프라이트들을 하나의 Sprite Atlas(2048x2048)로 묶음 |
| Sorting Layer 섞임 | A 아틀라스(배경)와 B 아틀라스(캐릭터)가 앞뒤로 교차 렌더링되며 배칭 중단 | 명확한 Sorting Layer 우선순위 정의 (Background > Enemies > Player > Foreground > UI) |
| 다중 파츠 파츠 꼬임 | 캐릭터의 몸체·무기·모자가 서로 다른 레이어에 섞여 다른 캐릭터와 인터리빙 | 캐릭터 루트에 SortingGroup 컴포넌트를 달아 캐릭터 전체를 단일 단위로 묶음 |
| Z축 깊이 불일치 | 스프라이트들의 Transform Z 위치가 제각각 달라 깊이 정렬 실패 | 2D 씬의 모든 스프라이트 Z 좌표를 0으로 고정하고 Sorting Layer Order in Layer로만 순서 제어 |
2. Sprite Atlas v2 최적 설정 가이드
- Include in Build: 런타임에 즉시 메모리에 올라가야 하는 핵심 아틀라스는 체크, 에셋번들/Addressables로 나중에 다운로드받을 아틀라스는 체크 해제.
- Padding = 4px 이상: 텍스처 아틀라스 패킹 시 스프라이트 간 여백(Padding)이 너무 좁으면, 카메라 줌이나 서브픽셀 렌더링 시 옆 스프라이트의 픽셀이 번져 들어오는 타일 블리딩(Texture Bleeding) 오류가 발생합니다.
- Tight Packing 옵션: 알파 여백이 많은 유기체 스프라이트는
Tight Packing을 켜서 용량을 절약하고, 격자 타일맵 스프라이트는 사각형 정밀도를 위해 해제하는 것이 좋습니다.