개요
언리얼 엔진을 통해 블루프린트 클래스를 생성하여 레벨에 같은 유형의 객체를 여러 개 배치하는 것과 유사하지만 조금은 다른 유니티 엔진의 프리팹(Prefab)에 대해 공부한 내용을 간단하게 정리해보도록 하겠습니다.
프리팹(Prefab)이란?
프리팹은 Unity에서 특정 게임 오브젝트와 그 구성 요소를 미리 정의해 놓은 템플릿입니다.
게임 오브젝트를 생성, 설정 및 저장할 수 있으며, 해당 게임 오브젝트의 모든 컴포넌트, 프로퍼티 값, 자식 게임 오브젝트를 재사용 가능한 에셋으로 만들 수 있습니다.
프리팹(Prefab) 생성 및 예시
프리팹을 생성하는 방법은 매우 간단합니다.
Hierarchy 탭에서 위치한 게임 오브젝트를 Project 탭으로 드래그 & 드롭을 하면 생성됩니다.
프리팹을 어떤 상황에 사용하는지 간단히 예시를 들어보도록 하겠습니다.
만약 상체, 하체로 구분된 상속 구조를 가진 탱크 오브젝트를 레벨에 여러 개 배치한다고 가정해보도록 하겠습니다.
하나의 오브젝트를 만들고 복사, 붙여넣기 하는 방식으로 총 10개의 탱크를 만들었다면 탱크의 하체를 다른 메쉬로 교환해야 하는 상황에서 10개의 모든 오브젝트를 수정해야 정상적으로 모든 오브젝트들이 수정될 것입니다.
여기서 프리팹 시스템을 이용한다면 하나의 프리팹 애셋만 수정하면 레벨에 배치된 모든 오브젝트들이 수정되는 것을 볼 수 있습니다.
즉, 프리팹 에셋에 대한 모든 편집 사항은 해당 프리팹의 인스턴스에 자동으로 반영되므로 모든 에셋 복사본에 같은 편집 작업을 반복하지 않고도 전체 프로젝트에서 일괄적으로 변경할 수 있으며, 프리팹 시스템을 통해 모든 복사본을 자동으로 동기화할 수 있기 때문에 게임 오브젝트를 단순히 복사해서 붙여넣는 것보다 더 효율적입니다.
만약 이후 10개 중 대장 탱크를 표시하기 위해 하나의 탱크에만 깃발을 추가해야 하는 경우에도 특정 프리팹 인스턴스만을 수정하는 것이 가능합니다.
프리팹의 일부 인스턴스를 다르게 만들고 싶은 경우 개별 프리팹 인스턴스의 설정을 오버라이드할 수 있으며, 프리팹의 배리언트를 생성하여 오버라이드 집합을 유의미한 프리팹 배리에이션으로 그룹화할 수도 있습니다.
정리
Unity의 프리팹 (Prefab)은 게임 오브젝트의 효율적 관리를 가능하게 하는 핵심 요소입니다.
프리팹은 게임 오브젝트와 그 구성 요소를 미리 정의한 템플릿이기 때문에, 이를 활용하면 동일한 설정과 구조를 가진 오브젝트를 여러 씬에서 일관되게 사용할 수 있습니다. 또한, 모든 프리팹 인스턴스에 대해 일괄적으로 변경사항을 반영시킬 수 있다는 점은 게임 제작에 필요한 시간을 많이 단축시켜 줄 수 있기에 꼭 알고 있어야 하는 개념입니다.
참고 자료
https://docs.unity3d.com/kr/2018.4/Manual/Prefabs.html
프리팹 - Unity 매뉴얼
Unity의 프리팹 시스템을 이용하면 게임 오브젝트를 생성, 설정 및 저장할 수 있으며, 해당 게임 오브젝트의 모든 컴포넌트, 프로퍼티 값, 자식 게임 오브젝트를 재사용 가능한 에셋으로 만들 수
docs.unity3d.com
'Game Programming > Unity Engine' 카테고리의 다른 글
[Unity] 코루틴(Coroutine) (0) | 2024.07.14 |
---|---|
[Unity] Raycast, LayerMask (0) | 2024.07.09 |
[Unity] 오브젝트 이동 방법, Delta Time, 입력 받기 (0) | 2024.07.08 |
[Unity] 로그 출력 및 프레임 제한 설정 (0) | 2024.07.03 |
[Unity] 유니티 공부 시작. 게임 오브젝트 및 컴포넌트 (0) | 2024.07.03 |