2D 프로젝트를 구상하기 전에 2D 개발과 관련되어 도움이 되는 정보들을 찾다가 좋은 정보를 찾은 것 같아 올리게 되었습니다.
소개 영상 - Unity Korea
소개 글 - Unity Blog
소개 영상 - Unity Blog

➡️ PPU 란?
- "한 유닛에 몇 픽셀을 대응시킬 것인가?"를 정하는 값 입니다.
예를 들어 PPU가 100이면 스프라이트 이미지 100픽셀이 월드 공간에서 1 Unit의 크기로 표시됩니다
➡️ 스프라이트 크기 결정
- Unity에서 2D 스프라이트를 가져올 때 스프라이트의 픽셀 해상도와 PPU가 만나
실제 씬 상에서의 가시적 크기가 결정됩니다.- 만약 스프라이트의 해상도가 256 X 256 이고 PPU가 128이라면
이 스프라이트는 월드 공간에서 2 Unit(256 / 128) 크기를 가집니다.
➡️ 프로젝트에서 사용할 때 유의할 점
- PPU는 단순히 스프라이트의 크기만 바꾸는 것이 아니라 전체 씬의 비율, 카메라 오소크래픽 사이즈 조정,
UI 캔버스 크기, 해상도 대응에 연쇄적으로 영향을 줄 수 있어서
미리 프로젝트의 게임 디자인이나 플랫폼에 알맞은 설정을 정하고 통일하거나 규칙을 정해 일관성을 유지하는 것이 좋습니다.


➡️ 오버드로우 현상이란?
- 2D 게임을 개발할 때 동일한 픽셀을 여러 번 그리는 현상을 말합니다.
해당 현상이 발생하면 GPU 부담과 배터리 소모를 높이고 결국 퍼포먼소 저하로 이어집니다.
➡️ 오버드로우 현상을 피하기 위해서 할 수 있는 방법은 ?
- 1. Mesh Type을 Tight로 설정
- Mesh Type의 Full Rect는 스프라이트 텍스쳐의 가로,세로 전체 영역을 렌더링 메시에 포함합니다.
투명 부분도 전부 포함하므로 다른 스프라이트 위에 겹칠 때 오버드로우가 증가합니다.- Mesh Type의 Tight는 스프라이트의 실제 픽셀 형태에 따라 메쉬를 최소 영역으로 잡아주므로 투명 영역이 줄어들며 그만큼 오버드로우가 감소합니다.
- 2. 스프라이트 편집기에서 폴리곤 형태 세부 조정
- 스프라이트 편집기에서 Custom Outline을 사용하면 스프라이트 주변의 메시 형태를 좀 더 정교하게 다듬을 수 있습니다. 이를 사용하여 실제로 그려야 하는 부분만 렌더링 하도록 조정합니다.
- 3. 투명한 배경 스프라이트를 여러 장 겹치지 않기
- HUD/UI 같은 고정 요소를 화면 전체를 덮는 반투명 패널로 만들어버리면 그 아래 레이어 전부가 다시 그려져서 오버드로우가 크게 증가합니다.
- UI는 필요한 영역만 덮도록 사이즈를 줄이거나 색을 완전히 불투명하게 처리해 오버드로우를 줄일 수 있습니다.
- 4. 레이어 및 소팅 레이어의 Z축으로 너무 많은 중첩을 피하기
- 오브젝트가 카메라 앞뒤로 여러 장 겹치는 구조라면 불필요하게 뒤쪽까지 렌더링할 가능성이 커집니다.
- 특히 정적 오브젝트가 많은 씬이라면 스프라이트를 타일맵으로 묶거나 배경을 하나의 큰 스프라이트로 합치면 오버드로우를 줄일 수 있습니다.
- 5. 필요 없는 투명 픽셀은 아예 별도의 스프라이트로 분리
- 캐릭터 위에 광원 효과를 합성하기 위해 반투명 오브젝트를 전 화면에 깔아버리면 겹치는 픽셀이 엄청나게 늘어나 오버드로우가 증가합니다.
- 광원,그림자,VFX 등은 필요한 영역 주변에만 제한적으로 표현하도록 구성하는게 더 효율적입니다.
- 6. 배경은 화면을 완전히 덮는 1장으로 두고, 나머지 요소는 그 위에 얹는 식으로 구성
- 배경 여러 장을 서로 다른 투명도나 그라이언트로 겹쳐서 표현하면 결과는 예쁘더라도 오버드로우가 크게 증가합니다.
- 가능한 경우 포토샵에서 미리 합성한 후 하나의 텍스쳐로 만들어 두는 것이 성능면에서는 더 좋습니다.
- 7. UI는 Screen Space - Overlay 모드 적극 활용
- UI가 월드 공간이나 카메라 공간에 있으면 씬 위에 또 다시 겹쳐 렌더링 될 수 있습니다.
- UI가 만약 화면 전체를 덮는 형태라면 Overlay 모드로 두고 씬 렌더와 분리하여 불필요한 오버드로우를 방지하는게 좋습니다.
➡️ 요약 / 팁
- 스프라이트 투명 영역을 줄이고 필요하면 CustomOutline으로 세밀 조정
- 레이어 중첩을 간소화하고 배경이나 UI 등 정적 요소는 합칠 수 있으면 미리 합쳐서 오버드로우 감소
- Scene 뷰 Overdraw 모드로 문제 영역을 찾아 최적화 (픽셀이 몇 번씩 겹쳐지는지에 따라 흰색~빨간색으로 표현됨)
- UI 배치나 VFX 효과도 투명 영역 최소화를 염두에 두고 구성

➡️ Composite Collider 2D란 ?
- 다수의 2D 콜라이더를 하나의 콜라이더로 합쳐주는 역할을 하는 컴포넌트 입니다.
➡️ Composite Collider 2D의 장점은?
- 복잡한 콜라이더 단순화
- 여러 타일에 각각 콜라이더가 설정되어 있다면 물리 엔진 입장에서는 각 콜라이더륿 별도로 계산해야 합니다.
- Composite Collider 2D는 이 다수의 콜라이더를 하나의 큰 콜라이더로 합쳐주며 물리 연산을 단순화 시켜줍니다.
- 성능 향상
- 물리 엔진이 콜라이더를 검사할 때 검사해야 할 오브젝트 수가 줄어들어 오버헤드를 감소시킵니다.
- 타일맵 작업 시 편리성
- 타일맵에 있는 각 타일마다 개별 콜라이더가 생성되면 충돌 영역이 타일 모양대로 나뉘어져 있습니다.
- Composite Collider 2D를 통해 이 영역들을 하나로 합치면 캐릭터나 물리 오브젝트가 이동할 때 매끄러운 충돌 처리가 가능합니다.
➡️ Composite Collider 2D 와 Tilemap Collider 2D의 차이점은?
- Tilemap Collider 2D와 Composite Collider 2D는 비슷해 보이지만
서로 다른 목적을 가진 별개의 컴포넌트입니다.
- Tilemap Collider 2D
- 타일맵에 배치된 각 타일에 맞춰 콜라이더를 자동으로 만들어주는 컴포넌트입니다.
- 예시로 100개의 타일이 존재하면 콜라이더도 100개가 생성되는 구조입니다.
- Composite Collider 2D
- 다수의 2D 콜라이더를 하나의 콜라이더로 합쳐주는 역할을 하는 컴포넌트 입니다.
- 이로 인해 Tilemap Collider 2D와 잘 맞습니다.

➡️ Chunk Mode
- 특징
- 같은 레이어(또는 동일한 타일맵) 내 다수의 타일을 하나의 큰 메시에 결합하여 렌더링합니다.
- 드로우 콜 횟수가 크게 줄어들어 CPU/GPU 부담이 감소합니다.
- 여러 타일이 하나의 큰 덩어리로 합쳐지므로 타일마다 세밀하게 소팅 레이어 또는 오더를 다르게 주기가 어렵습니다.
- 단일 레이어로 고정된 맵이나 소팅이 거의 필요 없는 레벨 아트에 적합합니다.
- 장단점
- 드로우 콜이 매우 적어 성능이 뛰어나다는 장점이 있습니다.
- 개별 타일에 대한 소팅이나 투명도 애니메이션 등을 세부적으로 적용하기가 어렵다는 단점이 있습니다.
➡️ Individual Mode
- 특징
- 각 타일이 독립된 스프라이트처럼 렌더링 되어 타일마다 소팅 레이어나 오더를 다르게 줄 수 있습니다.
- 예를 들어 타일 간에 플레이어가 앞에 서는지 뒤에 서는지 등을 세밀하게 조정할 수 있습니다.
- 타일이 많으면 각각 별도의 메시로 처리되므로 렌더링 오버헤드가 늘어납니다.
- 타일 개수가 많을수록 성능에 부담이 될 수 있습니다.
- 장단점
- 정렬,투명도,애니메이션 등을 타일마다 세밀하게 설정이 가능하다는 장점이 있습니다.
- 타일이 많으면 성능 저하가 발생하기 쉽다는 단점이 있습니다.
➡️ Sprite Renderer
- 특징
- 단일 스프라이트 렌더링입니다.
- Sorting Layer와 Order in Layer를 통해, 스프라이트가 어떤 순서로 그려질지 간단히 지정할 수 있습니다.
- 기본적으로 Sprite Renderer는 스프라이트 전용 셰이더를 사용하지만 필요하다면 다른 머티리얼/셰이더를 적용해 특별한 효과(투명도, 그라디언트, 라이트 반응 등)를 낼 수 있습니다.
- Animator, Animation 등으로 간단히 스프라이트 애니메이션을 적용하거나, Rigidbody 2D·Collider 2D와 결합해 물리 오브젝트로 사용할 수 있습니다.
- 장단점
- 유연한 개별 스프라이트 관리 및 간단한 소팅 및 시각 효과, 단순한 구조라는 장점이 있습니다.
- 대량의 스프라이트가 필요할 경우 관리가 복잡하며 그리드 기반 맵 구성에서는 비효율적이라는 단점이 있습니다.
➡️ 어떤 모드를 사용해야 하는지?
- Chuck Mode
- 성능이 중요하고 개별 타일 소팅이 필요 없는 고정 배경에 적합합니다.
- 한 소팅 레이어안에서 타일이 전부 동일한 깊이를 가져도 되는 상황에 사용
예를 들어 플랫폼 게임이나 2D 슈팅 게임 바닥, 배경 장식등이 있습니다.
- Individual Mode
- 타일 간에 소팅이 자주 필요하거나 각 타일이 서로 다른 오더,투명도,애니메이션을 가져야 할 때 적합합니다.
예를 들어 아이소메트릭 타일맵, 탑다운 뷰, 복잡한 오브젝트 겹침이 존재하는 맵 등이 있습니다.
- Sprite Renderer
- 캐릭터, 적 NPC, 아이템, UI 아이콘, 이펙트 등 타일맵 그리드가 필요 없는 개별 오브젝트에 적합합니다.
예를 들어 플레이어 캐릭터, 몬스터, 폭발 이펙트, 별도 레이어의 소규모 배경 등이 있습니다.

➡️ Transparency Sort Mode란?
- Unity는 반투명 객체들을 렌더링할 때 특정 규칙에 따라 순서를 정하는데 이 규칙을 Transparency Sort Mode라고 합니다.
➡️ Transparency Sort Mode의 각 Mode의 특징
- Default
- 일반적으로 카메라의 투영 방식에 맞춰 자동으로 정렬합니다.
- Orthographic
- 오브젝트의 y좌표에 따라 투명 순서를 결정합니다.
2D Orthographic 카메라에서 기본적으로 많이 사용됩니다.
- Custom Axis
- 직접 축을 지정해 해당 축에 따른 오브젝트의 좌표를 기준으로 투명 순서를 정합니다.
2D 아이소메트릭, 탑다운, 혹은 특수한 각도에서 2D를 표현할 때 유용하게 사용됩니다.