<유니티> 2D Sprite / Animation

상태
시작 전
담당자
날짜
숫자
0

Draw Call & Batches

Draw call
CPU가 GPU에게 어떤 그림을 그려달라고 요청하는 것
Draw Call 값이 낮을수록 게임이 가벼우며, 기기에 따라 특정 개수를 넘기면 프레임 저하 현상을 일으킬 수 있다.
모바일의 경우 100을 넘기지 않는 것을 권장
Batches
Draw Call을 포함하는 상위 개념으로 Unity 5.0부터 Draw Call 대신 Batches를 기준으로 “Stats”에 렌더링 정보를 표현
Batches는 Mesh, Material, Shader, Draw Call 등의 정보를 종합적으로 계산
Draw Call 값이 낮을수록 게임이 가벼워진다고 했죠? Batches의 값은 Draw Call을 포함하기 때문에 Batches의 값이 낮을수록 성능 최적화에 유리합니다.
그렇다면 Batches의 값을 낮추려면 어떻게 해야할까요?
Batches의 값을 낮추는 방법 중 하나는 Sprite Atlas를 사용하는 것입니다.

Sprite Atlas

여러 장의 Sprite 이미지를 한 장의 텍스처에 모아두고 사용하는 것으로 Unity는 Sprite Packer(Legacy)와 Sprite Atlas를 제공합니다.

Sprite Atlas를 사용해야하는 이유?

2D 게임에서 배경이나 캐릭터, 적 등을 표현하는 데 사용되는 이미지 에셋은 매번 렌더링할 때마다 각 이미지 에셋 별로 1의 Batches가 증가합니다.
예를 들어 게임에 사용되는 캐릭터, 적, 아이템 등 모두 다른 이미지를 사용하는 오브젝트가 100개 있고, 동시에 게임에 등장한다면 Batches 값은 100이 됩니다.
하지만 동일한 이미지를 사용하는 오브젝트가 100개 일 때는 Batches 값이 1이 됩니다,
Sprite Atlas를 사용해 서로 다른 이미지를 하나의 텍스처에 모아두고 사용하면 서로 다른 이미지의 오브젝트를 100개 만든다고 해도 Batches 값은 1일 것입니다.

Sprite Atlas 사용 시 주의할 점

만약 모든 이미지 에셋을 하나의 Sprite Atlas로 묶으면 어떻게 될까요?
Sprite Atlas 단위로 묶여 있을 때 Atlas 내부의 이미지 하나만 사용해도 해당 Sprite Atlas 내부의 모든 이미지 정보를 불러오게 됩니다.
따라서 한 화면에 함께 사용되는 것 or 하나의 오브젝트에 사용되는 것과 같이 관련이 있는 이미지들을 하나의 Sprite Atlas로 묶어주는 것이 좋습니다.