팀스파르타 내일배움캠프

[TIL] Unity 2D 타일맵 에셋 관리 및 최적화 총정리

creator2041 2025. 6. 30. 16:10

 

1. 타일맵 에셋의 기본: PPU와 슬라이싱

🔹 PPU (Pixels Per Unit)

Unity는 1 유닛 = 게임 세상 속 1미터로 간주합니다. 픽셀 아트를 사용할 때는 내가 사용하는 타일의 실제 픽셀 크기와 PPU 값을 정확히 맞춰야 그래픽이 깨지거나 줄어드는 일이 없습니다.

예시:

  • 내 타일이 32x32px → PPU를 32로 설정해야
  • 기본값인 100을 그대로 쓰면 타일이 너무 작게 나와서 맞지 않음

🔹 슬라이싱 (Slicing)

타일맵은 대부분 하나의 큰 스프라이트 시트로 구성되므로, 이를 작은 타일 단위로 분할하는 작업이 필요합니다.

설정 방법:

  1. Sprite Mode → Multiple로 설정
  2. Sprite Editor에서 → Slice → Grid By Cell Size 선택
  3. 셀 크기를 PPU와 같은 값으로 설정 (예: 32 x 32)

🔹 픽셀 아트에 권장되는 설정

  • Filter Mode: Point (no filter) → 흐릿한 경계 방지
  • Compression: None → 아트 손상 방지

2. 아트 에셋 포맷: PSD vs PNG

아트 리소스를 어떤 포맷으로 사용할지는 협업 방식과 수정 빈도에 따라 달라집니다.

🖼 PSD (포토샵 원본 파일)

  • ✅ 장점: 저장(Ctrl+S)만 하면 Unity에 자동 반영, 빠른 피드백
  • ❌ 단점: 파일 크기 큼 → Git 관리 어려움 → Git LFS 사용 권장

🖼 PNG (압축 이미지)

  • ✅ 장점: 용량이 가벼워 Git 관리에 유리, 팀 단위 분업에 적합
  • ❌ 단점: 수정 시마다 내보내기(Export) 필요

👉 개인 개발이나 아트 수정이 많은 경우 → PSD
👉 협업이나 Git 최적화가 중요한 경우 → PNG

⚠️ 핵심은 일관성!
한 프로젝트 안에서는 PSD든 PNG든 한 가지 포맷을 끝까지 유지하는 것이 중요합니다.


3. 타일 팔레트는 기능별로 분리하자

모든 타일을 하나의 팔레트에 몰아넣는 것은 비효율적이고 혼란을 초래합니다. 역할에 따라 분리하면 생산성이 크게 향상됩니다.

예시:

  • Ground_Palette: 지형 타일 (플레이어가 밟는 땅)
  • Structures_Palette: 벽, 건물 등 충돌 오브젝트
  • Nature_Palette: 나무, 바위 등 자연 요소
  • Decorations_Palette: 상호작용 가능한 장식물 (예: 통, 상자)

→ 이렇게 기능 중심으로 분리하면 관리와 수정이 훨씬 쉬워집니다.


4. 성능 최적화의 핵심: 스프라이트 아틀라스(Sprite Atlas)

Unity의 Sprite Atlas 기능은 여러 이미지를 하나의 큰 텍스처로 묶어, Draw Call을 줄여 FPS를 향상시키는 중요한 최적화 도구입니다.

✅ 언제 설정해야 하나?

→ 타일 작업이 끝난 후가 아닌, 초기 세팅 단계에서 미리 적용해야 합니다.

✅ 설정 방법:

  1. Assets > Create > 2D > Sprite Atlas 클릭
  2. 새로 생성된 아틀라스 파일을 선택
  3. Objects for Packing에 타일 이미지 파일 또는 폴더를 드래그해서 추가

🎯 주의: 타일 팔레트가 아닌 원본 이미지를 등록해야 합니다!

Sprite Atlas는 '이미지를 묶는 목록표'이지, 팔레트를 포함하는 컨테이너가 아닙니다.


🧠 마무리 요약

항목핵심 요점
PPU 타일 크기(px)와 동일하게 설정
슬라이싱 Grid By Cell Size로 PPU와 맞춤
PSD vs PNG 수정 잦으면 PSD, 협업용은 PNG
팔레트 분리 역할 기반으로 나누면 생산성 ↑
Sprite Atlas 초기부터 등록, 원본 이미지 기준
 

✍️ 오늘의 회고

이전까지는 그냥 PNG만 쓰고 팔레트 하나에 모든 타일을 때려 넣는 식으로 작업했지만, 이번에 아틀라스와 기능별 팔레트 분할을 도입하면서 작업 효율이 눈에 띄게 향상된다는 사실을 처음 알게 되었다.