Public

[Unity] Prefab Variant vs Nested Prefab

김치킨. 2025. 12. 18. 21:46

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 상속 + 빨간색 모델링 교체 + 공격력 100
  • Shield_Ice (Variant): Item_Base 상속 + 파란색 모델링 교체 + 방어력 50

🎯 결과적으로 얻는 이득

나중에 기획자가 *"모든 아이템 먹을 때 반짝이는 효과(SparkleEffect)를 좀 더 화려하게 바꿔주세요!"* 라고 요청한다면?

  1. SparkleEffect 프리팹 하나만 수정합니다.
  2. 이것이 포함된 Item_Base에 반영됩니다. (Nested 덕분)
  3. Item_Base를 상속받은 Sword_Fire, Shield_Ice 등 수백 개의 아이템이 동시에 수정됩니다. (Variant 덕분)

3. 주의할 점 (Best Practices)

  1. Variant의 Variant는 신중하게:
    Base -> Variant A -> Variant A-1 처럼 상속이 너무 깊어지면, 나중에 수정 사항이 어디서 덮어씌워졌는지(Override) 파악하기 힘듭니다. 1~2단계 상속을 권장합니다.
  2. 이름 규칙 정하기:
    프로젝트 뷰에서 헷갈리지 않도록 Base 프리팹에는 _Base_Master 같은 접미사를 붙여 원본임을 명시하는 것이 좋습니다.

마치며

  • Nested Prefab은 "조립"을 위해,
  • Prefab Variant는 "변형"을 위해 사용하세요.

이 두 가지 무기를 적재적소에 활용한다면, 수정 사항이 발생했을 때 야근하지 않고 "클릭 한 번"으로 해결하는 쾌거를 맛보실 수 있을 것입니다..


태그: #Unity #PrefabVariant #NestedPrefab #유니티강좌 #객체지향