[Unity] 스프라이트(Sprite) 정리

Lumos Velog·2025년 7월 14일
0

스프라이트(Sprite)

스프라이트(Sprite)는 원래 컴퓨터 그래픽스에서 움직이거나 독립적으로 다룰 수 있는 2D 이미지 조각을 의미한다.

옛날 레트로 게임(예: 슈퍼마리오, 갤러그)부터 현재 2D 게임까지, 캐릭터, 아이템, 효과 등 다양한 오브젝트를 화면에 그리기 위해 사용한다.

즉, 스프라이트란 "움직일 수 있는 그림 조각", "게임 속에서 위치, 크기, 투명도, 색상 등을 자유롭게 조작할 수 있는 하나의 2D 그래픽 오브젝트"라 정의할 수 있다.




구성과 특징

비트맵 이미지(픽셀로 이루어진 그림)와는 다르다. 비트맵은 그냥 한 장의 그림이라면, 스프라이트는 그 그림을 게임 오브젝트처럼 움직이고, 충돌시키고, 변형시킬 수 있게 만든 "데이터 구조"이다.

Unity에서 스프라이트는 실제 이미지 데이터(Sprite Asset)와, 이를 화면에 보여주는 컴포넌트(Sprite Renderer)로 나뉜다.

하나의 이미지를 여러 스프라이트로 쪼개 관리할 수도 있고(애니메이션 등), 반대로 여러 이미지를 조합해서 하나의 복잡한 오브젝트를 만들 수도 있다.




장점

  • 최적화된 그래픽 처리
    화면에 여러 개의 이미지를 빠르게 그릴 수 있음. 전통적으로 하드웨어에서도 별도 메모리로 처리했다(스프라이트 메모리).

  • 동적 변화 가능
    스프라이트는 위치, 크기, 회전, 색상, 투명도 등을 실시간으로 변경할 수 있다. 그래서 캐릭터의 움직임, 공격 이펙트, UI 효과 등 모든 동적인 연출에 활용된다.

  • 충돌 판정 가능 단순히 그림을 보여주는 것뿐 아니라, 물리 충돌이나 상호작용의 기본 단위가 된다.



Unity에서의 스프라이트

Unity는 2D 전용 렌더링 파이프라인에서 모든 2D 이미지를 "스프라이트" 형태로 다룬다.

단순 이미지와의 차이점은, 스프라이트는 "게임 오브젝트로써의 역할"을 할 수 있다는 것이다.

한마디로, Unity에서 스프라이트는 "씬(Scene) 위에서 살아 움직이고, 상호작용하며, 게임의 중요한 구성요소가 되는 2D 오브젝트"이다.


유사한 개념들이 여러 있지만 명확히 차이를 알 필요가 있다.

  • 텍스처(Texture): 단순히 그림 파일(이미지 데이터). 2D/3D 모두에서 사용.

  • 스프라이트(Sprite): 주로 2D에서, "움직이고 상호작용하는 오브젝트"로 쓰임. 텍스처를 게임 오브젝트화한 것.

  • UI 이미지: Canvas 위에서 쓰는 2D 이미지. 기술적으로 Sprite와 거의 유사하지만, UI 전용 렌더링 파이프라인을 따름.




Improt Setting

Texture Type

  • 2D 게임, UI 등에서 사용할 이미지임을 명시.

  • 이걸로 설정해야 Sprite Renderer, UI Image 등에서 사용할 수 있다.

  • 3D 텍스처(디퓨즈, 노말맵 등)로 쓸 거면 Default, Normal Map 등 선택.


Sprite Mode

  • Single
    한 장의 이미지(스프라이트)로 쓸 때 선택.
    예: 단일 아이콘, 하나의 캐릭터 등.

  • Multiple
    한 이미지 안에 여러 스프라이트가 들어있을 때 선택.
    예: 스프라이트 시트(여러 프레임, 아이템 묶음 등).
    Multiple로 해야 Sprite Editor에서 슬라이싱 가능.


Pixels Per Unit
1유닛(월드 좌표상 1)에 해당하는 픽셀 수.
100으로 하면 100픽셀짜리 이미지는 씬에서 1유닛 크키를 의미한다. 예를 들어, 게임 내에서 여러 이미지를 일관된 비율로 다루려면 이 값을 통일하는 게 중요하다.


Mesh Type

  • Full Rect
    이미지 전체 영역을 사각형으로 메쉬를 생성한다.
    대부분의 경우 이걸로 충분하다.

  • Tight
    실제 알파값(불투명 영역)을 감싸는 최소 경계로 메쉬를 생성한다.
    투명 영역이 많고, 최적화를 원할 때 사용한다.(픽셀 퍼펙트 X, 구불구불한 오브젝트 등).


Extrude Edges
Mesh Type이 Tight일 때만 사용 가능하다.
픽셀 경계에서 바깥으로 얼마나 더 확장해서 메쉬를 생성할지 설정한다.(최소화할수록 딱 맞게, 크게 할수록 조금 더 넓게).
주로 최적화, 마스킹 처리에 관련되어 있다.


Sprite Editor
Multiple로 설정 후에만 사용 가능하고 여기서 직접 잘라서 여러 스프라이트로 등록하거나, 자동 슬라이스(Slice) 가능하다.


Filter Mode

  • Point (no filter)
    픽셀 아트 등, 계단지게(선명하게) 보이길 원할 때 사용.

  • Bilinear
    부드럽게 보임(블러 처리). 고해상도 일러스트, 배경 등에 적합.

  • Trilinear
    3D에서 주로 사용. 2D에서는 별 차이 없음.


Compression

  • None
    압축 안 함. 이미지 원본 품질 그대로.

  • Low/Normal/High
    용량은 줄지만, 압축 단계가 높아질수록 화질이 떨어질 수 있다.(특히 투명 부분이 깨질 수 있음).
    용량이 민감하지 않거나, 뭉개짐 없이 선명해야 할 때는 None으로 사용하는게 좋다.


Max Size
임포트 시 리사이즈할 최대 해상도.

예를 들어, 2048으로 하면 2048 x 2048px보다 큰 이미지는 자동으로 줄여 임포트한다.

용량 관리, 메모리 최적화를 위해 적절히 조정하는게 좋다.


Format
이미지의 저장 포맷(DXT, ETC, RGBA32 등)

프로젝트 플랫폼(모바일, PC 등)에 따라 자동 추천값이 바뀐다.

알파(투명도)가 필요하면 RGBA 포맷 유지.


Alpha Source(Input Texture Alpha)
알파(투명도) 채널이 있는 이미지에서 어떻게 쓸지 결정한다
기본적으로 PNG 등에서 투명도를 가져와 사용한다.


sRGB (Color Texture)
색공간(감마, 리니어) 세팅. 일반적인 컬러 이미지면 체크.
라이트맵 등 특별한 용도 아니면 그냥 켜두면 된다.


Read/Write Enabled
체크 시 코드에서 직접 이미지 데이터를 읽거나 쓸 수 있다.(예: 동적 텍스처, Procedural Sprite 등).
대부분의 경우 필요가 없거나 다른 방법을 사용하는게 좋아 보인다.


Mip Maps
3D 텍스처에서 주로 사용. 2D에서는 끄는 게 일반적이다.
켜면 다양한 해상도로 미리 만들어둔 이미지를 자동으로 사용하지만
2D 게임에서는 거의 필요가 없다.


Wrap Mode

  • Clamp : 이미지 경계 밖으로 나갈 때, 끝 픽셀을 반복.
  • Repeat :이미지가 반복되도록 처리(타일맵 등에서 사용).

0개의 댓글