1. 스프라이트 아틀라스(Sprite Atlas)
스프라이트 아틀라스는 여러 개의 텍스처를 단일 텍스처로 결합하는 에셋이다.
스프라이트 아틀라스를 사용하지 않고 여러 개의 스프라이트를 사용하면
스프라이트를 불러올 때 하나씩 하나씩 불러오는데 이건 여러 개의 드로우 콜을 발생시킨다.
그런데 스프라이트 아틀라스를 사용하면 하나의 텍스처를 불러오면서 하나의 드로우 콜을 발생시킨다고 한다.
결론은 좋다! 이거니까 스프라이트 아틀라스를 잘 사용하자.
2. 사용 방법
- Sprite Atlas 생성
Sprite Atlas를 사용하려면 놀랍게도 Project Settings에서 따로 설정을 해야 한다. 귀찮게..
Edit - Project Settings
기본값이 Disabled로 되어있다. 이걸 Always Enabled로 변경해준다.
그리고 Project 윈도우에서 우클릭을 해서 Sprite Atlas를 생성해준다.
Sprite Atlas를 Resources 폴더에 생성했다.
Create - 2D - Sprite Atlas
SpriteAtlas가 생성된 걸 확인할 수 있다.
- 참고
프로젝트 생성할 때 2D 모드로 생성해야지 사용할 수 있다.
본인.. 아무 생각 없이 3D모드로 생성했다가 Sprite Atlas가 안 보여서 당황함..
- Sprite Atlas 설정
생성한 Sprite Atlas를 클릭하면 인스펙터 창에 저렇게 여러 설정이 있다.
설정에 대한 설명은 [이곳]에서 확인하면 된다.
그 중에 + 버튼을 눌러 사용할 sprite를 넣어준다.
이렇게 미리 준비한 sprite를 넣어주면 저렇게 이미지가 붙어서 있는 걸 볼 수 있다.
첫번째 준비는 끝!
- 오브젝트 생성
이미지랑 Sprite를 관리할 SpriteManager 빈 오브젝트와 스크립트를 생성한다.
물론 SpriteManager 오브젝트 없이 스크립트를 Image에 넣어서 사용해도 된다.
- 코드 작성
public class SpriteManager : MonoBehaviour
{
public SpriteAtlas spriteAtlas;
public Image img;
void Start()
{
// public으로 선언 시, 생략하고 드래그앤드롭으로 가능
spriteAtlas = Resources.Load<SpriteAtlas>("SpriteAtlas");
}
void Update()
{
if (Input.GetMouseButtonDown(0))
img.sprite = SpriteReturn("sprite0"); // 좌클릭
if (Input.GetMouseButtonDown(1))
img.sprite = SpriteReturn("sprite1"); // 우클릭
if (Input.GetMouseButtonDown(2))
img.sprite = SpriteReturn("sprite2"); // 휠클릭
}
public Sprite SpriteReturn(string spriteName)
{
return spriteAtlas.GetSprite(spriteName);
}
}
또는 좌클릭으로 순서대로 이미지를 변경하려면 코드를 이렇게 짜면 된다.
public class SpriteManager : MonoBehaviour
{
public SpriteAtlas spriteAtlas;
public Image img;
void Start()
{
// public으로 선언 시, 생략하고 드래그앤드롭으로 가능
spriteAtlas = Resources.Load<SpriteAtlas>("SpriteAtlas");
}
int num = -1;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
num++;
if (num > spriteAtlas.spriteCount) num = 0; // spriteCount: 아틀라스에 있는 sprite 개수
img.sprite = SpriteReturn("sprite" + num);
}
}
public Sprite SpriteReturn(string spriteName)
{
return spriteAtlas.GetSprite(spriteName);
}
}
- 실행 결과
실행해보면 이렇게 제이크가 잘 나오는 걸 확인할 수 있다!
'Unity | 유니티 > Unity 개발 일지' 카테고리의 다른 글
[Unity] 스크립트 직렬화( SerializeField / Serializable ) (0) | 2023.03.24 |
---|---|
[Unity] 모바일 스크롤 구현(UGUI | Scroll View) (0) | 2023.03.09 |
[Unity] 애니메이션 도구 | DOTween 기능(2) (0) | 2023.01.19 |
[Unity] 애니메이션 도구 | DOTween 기능(1) (0) | 2023.01.10 |
[Unity] UI 깜빡임 효과 넣기 (0) | 2023.01.09 |