1. 한눈에 보는 차이점: 포함 vs 상속
가장 많이 하는 실수가 이 둘의 용도를 혼동하는 것입니다. 아래 표로 확실히 정리해 드립니다.
| 핵심 개념 | 포함 (Composition) | 상속 (Inheritance) |
| 관계 | "A Has a B" (A는 B를 가지고 있다) | "B Is a A" (B는 A의 일종이다) |
| 예시 | 자동차는 바퀴를 가지고 있다. | 스포츠카는 자동차의 일종이다. |
| 아이콘 | 일반 파란색 큐브 | 화살표가 있는 큐브 아이콘 |
| 주 사용처 | 씬 구성, 복합 오브젝트 조립 (건물, UI 패널) | 데이터 변형이 필요한 개체 (적 캐릭터, 아이템) |
2. 실전 전략: 두 기능을 섞어 쓰기 (The Killer Combo) ⚔️
고수들은 이 두 가지를 따로 쓰지 않고 함께 사용합니다. RPG 게임의 아이템 시스템을 예로 들어보겠습니다.
단계 1: Nested Prefab으로 '부품' 만들기
먼저 게임에 쓰일 시각적 이펙트나 공통 UI를 만듭니다.
SparkleEffect(프리팹)ItemLabelUI(프리팹)
단계 2: Base Prefab 만들기
모든 아이템의 조상이 될 기본 프리팹을 만듭니다. 여기에 단계 1의 프리팹을 Nested 시킵니다.
Item_Base(프리팹)- 모델링 (Placeholder)
SparkleEffect(Nested Prefab)ItemLabelUI(Nested Prefab)
단계 3: Prefab Variant로 '파생' 상품 만들기
Item_Base를 우클릭하여 Create > Prefab Variant를 선택해 실제 아이템들을 만듭니다.
Sword_Fire(Variant):Item_Base상속 + 빨간색 모델링 교체 + 공격력 100Shield_Ice(Variant):Item_Base상속 + 파란색 모델링 교체 + 방어력 50
🎯 결과적으로 얻는 이득
나중에 기획자가 *"모든 아이템 먹을 때 반짝이는 효과(SparkleEffect)를 좀 더 화려하게 바꿔주세요!"* 라고 요청한다면?
SparkleEffect프리팹 하나만 수정합니다.- 이것이 포함된
Item_Base에 반영됩니다. (Nested 덕분) Item_Base를 상속받은Sword_Fire,Shield_Ice등 수백 개의 아이템이 동시에 수정됩니다. (Variant 덕분)
3. 주의할 점 (Best Practices)
- Variant의 Variant는 신중하게:
Base -> Variant A -> Variant A-1처럼 상속이 너무 깊어지면, 나중에 수정 사항이 어디서 덮어씌워졌는지(Override) 파악하기 힘듭니다. 1~2단계 상속을 권장합니다. - 이름 규칙 정하기:
프로젝트 뷰에서 헷갈리지 않도록 Base 프리팹에는_Base나_Master같은 접미사를 붙여 원본임을 명시하는 것이 좋습니다.
마치며
- Nested Prefab은 "조립"을 위해,
- Prefab Variant는 "변형"을 위해 사용하세요.
이 두 가지 무기를 적재적소에 활용한다면, 수정 사항이 발생했을 때 야근하지 않고 "클릭 한 번"으로 해결하는 쾌거를 맛보실 수 있을 것입니다..
태그: #Unity #PrefabVariant #NestedPrefab #유니티강좌 #객체지향
'Public' 카테고리의 다른 글
| [Unity\] On-Screen Stick 으로 모바일 조이스틱 구현하기 (0) | 2025.12.20 |
|---|---|
| [Unity] while 문 그만! Coroutine에서 '우아하게' 기다리기 : WaitUntil, WaitWhile (1) | 2025.12.20 |
| [Unity] 프리팹 안의 프리팹 : Nested Prefab (중첩 프리팹) (0) | 2025.12.18 |
| [Unity] 프리팹 간에 상속이 가능하다고? Prefab Variant 활용법 (0) | 2025.12.11 |
| Unity에서 `MonoBehaviour`를 `new`로 만들면 무슨 일이 일어날까? (0) | 2025.10.21 |