Prefab이란?
Prefab(Pre-Fabrication)은 Unity에서 오브젝트를 에셋 파일로 저장한 형태입니다.
프리팹은 게임 씬(Scene)에 직접 존재하지 않고, 오브젝트의 청사진 역할을 합니다.
프리팹의 핵심:
1. 동일한 설정을 가진 오브젝트를 반복적으로 생성 가능.
2. 중앙에서 프리팹을 수정하면, 이를 기반으로 생성된 모든 인스턴스가 수정 내용의 영향을 받음.
3. 코드 또는 드래그 앤 드롭으로 오브젝트를 실시간으로 생성 가능.
Prefab 정의와 생성
프리팹 생성
- Hierarchy에 있는 오브젝트를 Assets 폴더로 드래그 앤 드롭.
- 프리팹은 게임 내에서 틀(Template) 역할을 하며, 이를 기반으로 오브젝트를 생성합니다.
Prefab의 역할
- 클래스(
Class)와 객체(Object)의 관계처럼, 프리팹은 클래스, 프리팹에서 생성된 오브젝트는 객체와 유사.
- 예시:
- 프리팹(Tank) -> 씬에 여러 Tank 오브젝트 생성.
프리팹 사용법
- Unity Editor에서 직접 생성:
- 프리팹을 Scene 또는 Hierarchy로 드래그 앤 드롭하면 오브젝트 생성.
- 코드에서 생성:
Instantiate 함수를 사용하여 프리팹을 오브젝트로 생성.
GameObject newTank = Instantiate(tankPrefab);
Prefab 수정
-
Prefab 편집 모드:
- 방법:
- 프리팹을 더블 클릭.
- 또는 Hierarchy의 프리팹 인스턴스 옆 화살표 클릭 후, Open Prefab 버튼 클릭.
- 프리팹 자체를 수정하여, 해당 프리팹을 기반으로 생성된 모든 인스턴스에 수정 사항 반영.
-
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;
}
Prefab Variant
Prefab Variant란?
- Prefab Variant는 기존 프리팹을 상속받아 생성되는 새로운 프리팹.
- 특징:
- 기본 프리팹의 속성을 물려받음.
- 특정 부분만 오버라이드하거나 새로운 속성을 추가할 수 있음.
Prefab Variant 생성 방법
- 기존 프리팹을 우클릭 > Create Prefab Variant.
- 또는 Hierarchy에서 프리팹 드래그 > Prefab Variant 옵션 선택.
Prefab Variant의 장점
- 기존 프리팹과의 연결 유지:
- 부모 프리팹을 수정하면 Variant도 수정 내용 반영.
- Variant는 자신만의 속성이나 오버라이드를 추가 가능.
프리팹을 인스턴스로 생성하는 방법
유니티 에디터에서 생성
- 프리팹을 Scene 또는 Hierarchy 창으로 드래그 앤 드롭.