Prefab이란?

Prefab(Pre-Fabrication)은 Unity에서 오브젝트를 에셋 파일로 저장한 형태입니다.
프리팹은 게임 씬(Scene)에 직접 존재하지 않고, 오브젝트의 청사진 역할을 합니다.
프리팹의 핵심:
1. 동일한 설정을 가진 오브젝트를 반복적으로 생성 가능.
2. 중앙에서 프리팹을 수정하면, 이를 기반으로 생성된 모든 인스턴스가 수정 내용의 영향을 받음.
3. 코드 또는 드래그 앤 드롭으로 오브젝트를 실시간으로 생성 가능.


Prefab 정의와 생성

프리팹 생성

  1. Hierarchy에 있는 오브젝트를 Assets 폴더로 드래그 앤 드롭.
    • 결과: Prefab 파일 생성.
  2. 프리팹은 게임 내에서 틀(Template) 역할을 하며, 이를 기반으로 오브젝트를 생성합니다.

Prefab의 역할

  • 클래스(Class)와 객체(Object)의 관계처럼, 프리팹은 클래스, 프리팹에서 생성된 오브젝트는 객체와 유사.
  • 예시:
    • 프리팹(Tank) -> 씬에 여러 Tank 오브젝트 생성.

프리팹 사용법

  1. Unity Editor에서 직접 생성:
    • 프리팹을 Scene 또는 Hierarchy로 드래그 앤 드롭하면 오브젝트 생성.
  2. 코드에서 생성:
    • Instantiate 함수를 사용하여 프리팹을 오브젝트로 생성.
GameObject newTank = Instantiate(tankPrefab);

Prefab 수정

  1. Prefab 편집 모드:

    • 방법:
      • 프리팹을 더블 클릭.
      • 또는 Hierarchy의 프리팹 인스턴스 옆 화살표 클릭 후, Open Prefab 버튼 클릭.
    • 프리팹 자체를 수정하여, 해당 프리팹을 기반으로 생성된 모든 인스턴스에 수정 사항 반영.
  2. Instance 수정:

    • 씬에서 특정 프리팹 인스턴스를 수정하면, 해당 인스턴스는 Override 상태가 됩니다.

Prefab Override

Override란?

  • 프리팹 인스턴스가 프리팹 기본값에서 벗어나 수정된 상태.

Override 관리

  • Overrides 버튼:
    • 프리팹과 달라진 값을 확인.
    • Revert All: 프리팹 기본값으로 되돌림.
    • Apply All: 현재 인스턴스의 변경 사항을 프리팹과 모든 인스턴스에 적용.

장점:

  • 같은 프리팹을 기반으로 하더라도, 각각의 인스턴스가 개성을 가질 수 있음.
  • 예시:
    • 프리팹 기본값: Cube(1, 1, 1).
    • 특정 인스턴스: Cube(3, 3, 3).

Nested Prefab (중첩 프리팹)

  • Nested Prefab: 프리팹 안에 또 다른 프리팹이 포함된 구조.
    • 예: Tank 프리팹 내부에 Player 프리팹 포함.
  • 사용 사례:
    • 복잡한 오브젝트를 분리된 프리팹으로 관리하여 재사용성과 모듈성을 높임.

예시

class Tank
{
    public float speed = 10.0f;
    Player player; // Player 프리팹 포함
}

Prefab Variant

Prefab Variant란?

  • Prefab Variant는 기존 프리팹을 상속받아 생성되는 새로운 프리팹.
  • 특징:
    • 기본 프리팹의 속성을 물려받음.
    • 특정 부분만 오버라이드하거나 새로운 속성을 추가할 수 있음.

Prefab Variant 생성 방법

  1. 기존 프리팹을 우클릭 > Create Prefab Variant.
  2. 또는 Hierarchy에서 프리팹 드래그 > Prefab Variant 옵션 선택.

Prefab Variant의 장점

  • 기존 프리팹과의 연결 유지:
    • 부모 프리팹을 수정하면 Variant도 수정 내용 반영.
    • Variant는 자신만의 속성이나 오버라이드를 추가 가능.

프리팹을 인스턴스로 생성하는 방법

유니티 에디터에서 생성

  • 프리팹을 Scene 또는 Hierarchy 창으로 드래그 앤 드롭.

profile
李家네_공부방

0개의 댓글