One_KWS

스프라이트 아틀라스 (Sprite Atlas) 본문

Unity

스프라이트 아틀라스 (Sprite Atlas)

One-Kim 2023. 4. 22. 01:16

스프라이트 아틀라스(Sprite Atlas)를 사용하면 여러 개의 텍스처를 단일 텍스처로 합칠 수 있다. 여러 개의 텍스처를 호출할 경우 드로우 콜이 텍스처의 개수만큼 발생하게 되어 성능 저하가 일어날 수 있다. 스프라이트 아틀라스를 사용하면 드로우 콜을 줄일 수 있다.

 

Sprite Atlas 설정

Edit - Project Settings - Editor에서 Sprite Packer - Mode를 Sprite Atlas V1 - Always Enabled로 변경한다.

 

Sprite Atlas 만들기

Create → 2D → Sprite Atlas를 선택하여 Sprite Atlas를 생성한다.

생성된 스프라이트 아틀라스의 Inpector 창의 하단에 있는 Objects for Packing에 스프라이트를 추가한다. + 버튼을 눌러 추가하거나 직접 드래그 앤 드롭하여 추가할 수 있다. 스프라이트 폴더를 드래그 앤 드롭하여 통째로 넣을 수도 있다.

 

Pack Preview를 눌러 만들어진 스프라이트 아틀라스를 볼 수 있다.

 

Tight Packing &Allow Rotation

Tight Packing을 체크하면 이미지들을 촘촘하게 배치한다. 이미지들을 밀도있게 배치해줌으로써 Sprite Atlas의 공간을 효율적으로 사용할 수 있다. 

Tight Packing 체크 해제된 상태(왼쪽)와 체크된 상태(오른쪽)

Allow Rotation도 마찬가지로 체크할 경우 이미지들을 더 촘촘하게 배치할 수 있다. 이미지들을 밀도있게 배치하기 위해 일부 이미지들이 회전되어 들어간다. 

 

Tight Packing과 Allow Rotation을 사용할 때 이미지들이 촘촘하게 배치되어 있기 때문에 다른 이미지의 영역을 침범하는 경우가 발생한다. 

이럴 경우 Sprite Editor - Custom Outline에서 이미지의 영역을 설정해주어야 한다.

 

Script로 Sprite Atlas 사용하기

GetSprite(string name)

GetSprite 함수를 이용하여 아틀라스에 추가한 스프라이트를 가져올 수 있다.

private SpriteAtlas atlas;
...
atlas.GetSprite("sprite name");
...

spriteCount

아틀라스에 추가한 스프라이트의 수를 가져올 수 있다.

private SpriteAtlas atlas;
...
var count = atlas.spriteCount;
...

 

'Unity' 카테고리의 다른 글

Android Plugin 만들기  (0) 2023.04.25
Unity 최적화 - Asset  (0) 2023.04.19
Mono, IL2CPP  (3) 2023.04.01
Addressable System #5 - Build layout report  (0) 2023.03.24
Unity - Editor.Log  (0) 2023.03.24