프리팹이란 모든 프리팹 인스턴스가 공유하는 기본 정보를 저장하기 위해 엔티티 및 컴포넌트의 계층구조를 사용하는 안정적인 오브젝트입니다.
따라서 레벨을 계속해서 제작하고 디자인하면서 프리팹 전체나 일부를 쉽게 편집할 수 있습니다. 씬 그래프에서 생성된 에셋을 인스턴싱 및 오버라이드하여 신규 게임 오브젝트 및 프리팹을 만들 수 있습니다.
프리팹은 게임 오브젝트의 스탬프처럼 작동하므로, 원하는 횟수만큼 씬에 프리팹을 배치할 수 있습니다. 생성하는 모든 인스턴스는 그룹으로 편집하거나 개별적으로 편집할 수 있습니다.
프리팹의 성능과 잠재력에 대해 자세히 알아보려면 다음 문서를 참고하세요.
엔티티를 프리팹으로 저장하기
프리팹은 가능하면 조밀하게 구성되어야 하지만 프리팹 디자인이 너무 복잡해서도 안 됩니다. 프리팹에 엔티티와 컴포넌트가 많으면 데이터가 많아지고 프로젝트에 문제를 유발할 수 있습니다.
한 번에 하나의 엔티티에서 하나의 컴포넌트 타입만 사용할 수 있습니다. 따라서 컴포넌트 타입을 선택하면 같은 엔티티에 이 컴포넌트 타입을 재사용할 수 없습니다. 같은 컴포넌트를 사용하려면 다른 엔티티에 추가하고 같은 컴포넌트를 새 엔티티에 추가해야 합니다.
프리팹을 생성하려면 다음 작업을 수행합니다.
아웃라이너(Outliner)에서 부모 엔티티를 우클릭하고 프리팹으로 저장…(Save As Prefab…)을 선택합니다. 새 프리팹 생성(Create New Prefab) 창이 열립니다.
클릭하면 이미지가 확대됩니다.
먼저 아웃라이너에서 엔티티를 중첩할 수도 있고, 이후 프리팹 에디터에서 프리팹에 새로운 엔티티를 추가할 수도 있습니다.
프리팹을 명명하고 [엔티티] 클래스 생성(Create [entity] Class)을 선택합니다. 프리팹 에디터가 열리고, 생성한 프리팹이 뷰포트 내부에서 함께 열립니다. 프리팹 섬네일은 콘텐츠 브라우저에 표시됩니다.
프리팹은 보다 손쉬운 편집 기능을 위해 아웃라이너에서 중첩하고 그룹으로 묶을 수 있습니다.
프리팹 섬네일을 선택한 후 콘텐츠 브라우저에서 뷰포트로 프리팹을 드래그합니다. 이렇게 하면 프리팹의 다른 인스턴스가 생성됩니다.
모든 프리팹 인스턴스로 변경사항 전파하기
프리팹 인스턴스는 원본의 시각적 사본에 그치지 않습니다. 프리팹 에디터로 변경사항을 적용하는 경우, 저장된 모든 변경사항이 전체 인스턴스에 자동으로 적용됩니다. 씬 그래프에서 계층구조를 사용하면 자손 프리팹과 엔티티가 부모와 상호작용하는 방식을 결정할 때 유용합니다. 특히 피벗 포인트가 중앙에서 벗어나 있는 에셋으로 작업하거나, 월드의 오브젝트와 정렬하기 위해 언리얼 유닛을 사용하지 않는 경우 더욱 그렇습니다.
모든 프리팹 인스턴스를 찾아 똑같은 변경사항을 여러 번 반복해서 적용할 필요가 없으므로 시간을 절약할 수 있습니다.
계층구조에서 다양한 프리팹을 그룹으로 묶어 보다 복잡한 프리팹을 만들 수도 있습니다.
프리팹 인스턴스 오버라이드하기
프리팹 인스턴스에서 컴포넌트를 오버라이드하여 해당 단일 인스턴스에 고유한 변경사항을 적용할 수 있습니다. 컴포넌트를 오버라이드하는 경우, 오버라이드 아이콘이 아웃라이너의 엔티티, 컴포넌트 카드, 그리고 디테일 패널의 오버라이드된 컴포넌트 옆에 나타납니다.
오버라이드는 영향을 받는 컴포넌트의 수준에서 컴포넌트의 오버라이드된 프로퍼티가 변경되는 경우 부모 프리팹의 디자인보다 우선합니다. 다음 두 가지 방법으로 컴포넌트를 오버라이드할 수 있습니다.
프리팹 에디터에서 프리팹 편집하기
컴포넌트 카드에서 엔티티 또는 컴포넌트 오버라이드하기
프리팹 에디터(Prefab Editor)에서 새 컴포넌트를 추가하거나 Verse 컴포넌트를 생성하여 이동 또는 상호작용 등의 기능을 프리팹에 추가합니다. 프리팹 에디터에서 이러한 변경사항을 저장하면 씬의 모든 프리팹 인스턴스에 변경사항이 적용됩니다.
엔티티 오버라이드는 새 컴포넌트를 추가하거나 Verse 컴포넌트를 생성하여 이동 또는 상호작용 등의 기능을 추가하는 방식으로 이뤄집니다.
프리팹 인스턴스의 컴포넌트 카드에서 엔티티나 컴포넌트를 오버라이드하면 고유한 변경사항이 해당 인스턴스에만 적용됩니다. 아래의 이미지에서 두 개의 목조 주택은 동일한 원본 프리팹 디자인을 바탕으로 합니다. 하지만 두 번째 주택에는 핵심 컴포넌트에서 컴포넌트 카드에 오버라이드가 적용되어, 다른 메시를 추가하거나 프리팹의 일부를 다른 방향으로 향하게 하여 주택의 새로운 면이 보이도록 했습니다.
컴포넌트를 오버라이드하려면 다음 작업을 수행합니다.
콘텐츠 브라우저에서 프리팹의 인스턴스를 뷰포트로 드래그합니다.
디테일 패널에서 프리팹 인스턴스의
sphere_light_component를 선택합니다.컴포넌트 카드 메뉴 버튼을 클릭한 후 컴포넌트 오버라이드(Override Component)를 선택합니다.
컴포넌트의 새 프로퍼티를 선택합니다. 이 인스턴스에 대한 이 컴포넌트의 오버라이드는 이제 부모 프리팹과 달라졌으며, 부모 프리팹에서 변경사항을 적용하더라도 계속해서 동일한 상태를 유지합니다.
오버라이드 아이콘
오버라이드 아이콘은 파란색 화살표가 아래쪽으로 원 중앙을 가리키고 있는 모양입니다. 아이콘은 이 엔티티의 컴포넌트가 오버라이드되었음을 나타냅니다. 엔티티를 오버라이드하는 경우 씬에서 여러 번 사용할 수 있고, 해당 엔티티 역시 프리팹에서 계속 일관되게 작동합니다.
프리팹에 추가된 새 엔티티에는 중앙에 더하기 표시가 있는 녹색 원이 표시되어 프리팹이 설정된 후 추가되었음을 나타냅니다.
프리팹 계층구조
프리팹 계층구조는 하나의 부모 프리팹 또는 엔티티 아래에 여러 엔티티와 프리팹을 중첩하여 생성합니다. 부모 지정을 통해 다음과 같은 작업을 할 수 있습니다.
프리팹의 컴포넌트 기능을 확장하여 프리팹이 씬에서 작동하는 방식을 지정합니다.
자손 엔티티가 부모 프리팹과 상호작용하는 방식을 결정합니다.
계층구조를 사용하면 피벗 포인트 배치를 통해 씬의 특정 벡터에 에셋을 스냅할 수 있습니다. 이는 세트 드레싱뿐 아니라, 좌표를 사용하는 게임플레이 요소에도 유용합니다.
피벗 포인트 배치 및 그리드 스냅
피벗 포인트 및 그리드 스냅은 엔티티의 transform_component와 함께 작동하여 씬에서 게임 오브젝트와 프리팹을 정렬합니다.
프리팹 에디터는 프리팹을 스케일 조절하는 데 그리드를 사용하지 않습니다. 대신 아웃라이너의 우클릭 메뉴를 사용하여 프리팹의 피벗 포인트에 대한 오프셋을 결정합니다.
그리드 스냅은 에셋의 크기를 기준으로 합니다. 에셋이 의도한 대로 작동하게 하려면 512 언리얼 유닛으로 스케일 조절되어야 하며, UEFN에서 설정된 동일한 그리드 측정을 사용해야 합니다. 에셋의 스케일을 다시 조절하지 않는 경우에는 에셋의 피벗 포인트를 리셋한 후 그리드 스냅 세팅의 스케일을 다시 조절합니다.
프리팹의 중앙에 피벗 포인트를 배치하는 것은 모든 에셋 타입에서 작동하지는 않습니다(예: 계단). 대신 모델링 모드(Modeling Mode)의 트랜스폼 편집(Edit Transform) 옵션을 사용하여 피벗 포인트에 오프셋을 적용함으로써 에셋이 월드 내 원하는 위치에서 나타나고 정렬되도록 할 수 있습니다.
왼쪽-위쪽-앞쪽 좌표계 문서에서 3D 월드 스페이스에 대한 자세한 내용을 알아보세요.
씬 그래프의 컴포지션
씬 그래프의 컴포지션은 에셋을 정렬할 수 있게 해 줍니다. 모든 자손 엔티티와 프리팹은 부모 오브젝트를 기준으로 오프셋에서 회전합니다. 프리팹 구조물을 360도 돌리는 경우, 오브젝트는 그리드의 중앙을 기준으로 회전합니다.
UEFN에서 액터를 회전하는 경우, 회전은 월드 내 액터의 배치에 의해 결정됩니다. 이 때문에 개별 액터를 정렬하여 완전한 구조물을 만드는 것이 더욱 어려워집니다.
씬 그래프에서 계층구조를 사용하면 자손 프리팹과 엔티티가 부모와 상호작용하는 방식을 결정할 때 유용합니다. 특히 피벗 포인트가 중앙에서 벗어나 있는 에셋으로 작업하거나, 월드의 오브젝트와 정렬하는 데 언리얼 유닛을 사용하지 않는 경우 더욱 그렇습니다.
또한 씬에 배치되어 있는 부모 프리팹을 기준으로 장식 에셋을 배치할 때도 유용합니다.
트랜스폼 컴포넌트 사용에 대한 자세한 내용은 트랜스폼 컴포넌트 문서를 참고하세요.
Verse의 프리팹 클래스
프로젝트에서 생성하는 프리팹은 프로젝트의 Assets.digest.verse 파일에서 Verse에 클래스로 노출됩니다. Verse를 사용하여 프리팹 클래스를 인스턴스화하고 씬의 엔티티에 추가하는 방법으로 프리팹의 인스턴스를 생성할 수 있습니다.
프리팹 작업하기에 대해 자세히 알아보려면 Verse를 사용하여 자신만의 컴포넌트 만들기를 참고하세요.