UDN
Search public documentation:

UsingPrefabsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 레벨 편집 > 프리팹 사용하기
UE3 홈 > 레벨 디자이너 > 프리팹 사용하기

프리팹 사용하기


문서 변경내역: James Golding 작성. James Tan 업데이트. 홍성진 번역.

개요


프리팹(Prefab)이란 액터와 그에 관련된 키즈멧으로 구성된 집합으로, 패키지에 저장하고 레벨에서 인스턴스로 놓을 수 있습니다.

꽤 자주 레벨을 구성할 때, 액터와 그에 관련된 키즈멧 조합을 만들고, 그 레벨이나 다른 레벨에서 해당 조합을 재사용하고 싶을 때가 있습니다. 스태틱 메시, 라이트, 파티클 시스템과 꺼지게 하는 키즈멧 등으로 구성된 횃불을 예로 들어 보겠습니다. 프리팹을 사용하면 이러한 종류의 집합을 한 번 생성한 다음 패키지에 Prefab 으로 저장할 수 있습니다. 이후 콘텐츠 브라우저에서 이 프리팹을 선택하여 레벨에 여러 번 추가할 수 있습니다.

프리팹은 레벨에서 자신에 가한 변경사항 정보를 가질 수 있으며, 그러한 변경사항을 다시 기존의 해당 프리팹 인스턴스 전부에 전파시킬 수 있습니다. 여기서 언리얼의 프로퍼티 시스템이 사용되기 때문에, 프리팹 변경시 원본 프리팹 기본값을 유지하고 있던 프로퍼티만이 업데이트됩니다. 예를 들어 노란 불빛이 있는 프리팹이 있다고 할 때, 그 중 하나의 인스턴스를 파랑 불빛으로 바꿉니다. 그리고서 프리팹 자체를 초록으로 변경합니다. 그러면 불빛이 그대로 노란색인 인스턴스만 녹색으로 변경됩니다. 사용자가 특정 용도에 맞게 프리팹 인스턴스의 일부를 수정하거나 제거할 수도 있는 데다가, 프리팹에 대한 업데이트를 받기도 한다는 점에서 매우 좋습니다.

추천 작업방식


이 글에 나열된 기능이 기술적인 관점에서 여전히 정확하기는 하지만, 에픽의 레벨 디자이너와 아티스트는 프리팹 사용시 발생하는 문제를 피하기 위해 내부적으로 다음과 같은 작업방식을 따르고 있습니다:

  • 프리팹은 레벨 배치 용도로만 사용합니다.
  • 즉 프리팹을 레벨에 배치하고 나서 즉시 우클릭 - Convert PrefabInstance To Normal Actors (프리팹 인스턴스를 일반 액터로 변환)을 선택하여 보통 액터로 변환해 준다는 뜻입니다.
  • 액터 프로퍼티 변경내용을 레벨에 이미 배치된 프리팹 인스턴스로 전파한다던가, 프리팹 애셋 내 키즈멧 로직을 저장한다든가 하는 고급 기능은 삼가주세요.

이러한 방식이 기술적으로 작동은 할지 몰라도, 여러가지 문제로 이어질 확률이 있습니다. 그렇기에 에픽 내부의 직원들은 프리팹을 위의 방식대로만 사용하고 있으며, 이 방식을 준수해 주실 것을 강권해 드립니다.

프리팹 만들기


프리팹을 새로 만들려면 먼저 레벨에서 원하는 액터를 조합합니다.

Prefab_00_ArrangingActors.jpg

그런 다음 모두 선택하고 마우스 오른쪽 버튼을 클릭한 다음 단축 메뉴에서 프리팹 생성 을 선택합니다.

Prefab_01_CreatePrefab.jpg

패키지 이름, 옵션으로 그룹과 새 프리팹 이름을 입력하라는 창이 뜹니다.

Prefab_02_PackageGroupingNameDialogBox.jpg

선택한 액터를 새 프리팹의 인스턴스로 대체할지 물어옵니다. 새 프리팹의 원점은 선택된 것 중 가장 큰 액터의 원점으로 선택됩니다.

Prefab_03_ReplaceActorsWithNewPrefab.jpg

콘텐츠 브라우저에 새 프리팹이 보일 것입니다. 프리팹은 레벨에 만들 당시의 썸네일로 표시됩니다. 프리팹 생성 당시 퍼스펙티브 에디터 뷰포트의 카메라로 찍히니, 프리팹을 처음 만들 때 오브젝트 배치에 신경써 주는 것이 좋습니다.

Prefab_04_PrefabInContentBrowser.jpg

프리팹 인스턴스 놓기


프리팹 인스턴스를 놓으려면 콘텐츠 브라우저에서 선택한 다음 레벨에서 우클릭한 후 프리팹 추가: <프리팹 이름> 을 선택하면 됩니다. 레벨에 나타날 것입니다. 또 프리팹의 모든 인스턴스에는 그에 관련된 PrefabInstance 액터가 있는 것을 볼 수 있습니다. 빨강 P 아이콘같은 모양이 그 프리팹의 원점을 나타냅니다.

Prefab_05_Prefab.jpg

이는 이 인스턴스에 사용된 프리팹과, 어느 액터가 그에 속하는지에 대한 기록을 유지하는 데 사용됩니다.

프리팹을 만들 때, 프리팹 안의 액터간 리퍼런스는 올바르게 보존됩니다. 즉 프리팹 내 다른 액터에 붙은 액터가 있는 경우, 프리팹을 놓을 때마다 올바르게 처리됩니다. 그러나 프리팹 액터로의 리퍼런스는 지워집니다.

프리팹 편집하기


기본적으로 프리팹 인스턴스 안의 액터를 클릭하면 전체 인스턴스가 선택됩니다. 전체를 하나인 것처럼 움직일 수 있으니, 프리팹 작업을 쉽게 할 수 있습니다.

Prefab_06_PrefabTranslation.jpg

그러나 가끔 프리팹 안의 어느 한 액터면 수정하고 싶을 때가 있습니다. 그러려면 먼저 보기 메뉴에서 "프리팹 선택 잠금" 체크를 해제하여 프리팹 자체가 선택되지 않도록 해야 합니다. 프리팹에 속하는 개별 액터를 선택할 수 있게 됩니다.

Prefab_07_LockPrefabsFromSelection.jpg

프리팹 업데이트


패키지에 저장된 프리팹을 업데이트하려면, 변경된 프리팹 인스턴스에 우클릭하고 맥락 메뉴에서 이 인스턴스에서 <이름> 프리팹 업데이트 를 선택합니다. 그러면 선택된 인스턴스의 프로퍼티가 프리팹에 복사됩니다. 이후 모든 변경사항이 현재 레벨에 있는 프리팹의 모든 인스턴스에 전달됩니다. 그 인스턴스에서 액터를 삭제한 경우, 해당 액터가 프리팹 자체와 프리팹의 모든 인스턴스에서 지워집니다. 새 액터를 프리팹에 추가하려면, 추가할 액터와 프리팹 인스턴스를 선택한 다음 업데이트합니다. 그러면 해당 액터가 프리팹과 모든 인스턴스에 추가됩니다. 프리팹을 업데이트하면 프리팹 미리보기 이미지도 다시 캡처됩니다.

위에서 언급한 것처럼 프리팹의 인스턴스에서 프로퍼티를 변경하면 기본 프리팹을 업데이트해도 그 값은 변경되지 않습니다. 또한 프리팹 인스턴스에서 액터를 삭제하면, 프리팹을 업데이트해도 액터가 다시 표시되지 않습니다. 다만 BSP 브러시와 볼륨은 이런 방식으로 작동하지 않으며 항상 프리팹에서 복사됩니다.

맵이 저장된 이후 업데이트된 프리팹 인스턴스가 있는 맵을 열 경우 맵의 해당 Prefab 인스턴스를 자동으로 업데이트하고 다음과 같은 대화 상자를 표시합니다.

Prefab_08_PrefabsContextMenu.jpg

프리팹 리셋하기


프리팹을 변경했는데 마음에 들지 않는다, 언제든지 패키지 안에 저장된 프리팹으로 되돌릴 수 있습니다. 우선 "프리팹 선택 잠금" 을 체크했는지 확인하고, 우클릭한 다음 <이름> 프리팹에서 인스턴스 리셋 을 선택합니다.

프리팹에 키즈멧 시퀸스 추가


프리팹은 키즈멧 스크립팅과 액터 콜렉션을 모두 포함할 수 있습니다. 'Prefab을 생성 또는 업데이트할 때는 레벨 시퀸스를 검색하여 프리팹의 액터에 대한 참조가 있는지 확인합니다. 있는 경우 모두를 포함하는 계층 구조에서 최상의 시퀸스를 찾은 다음 이 프리팹에 사용할 시퀸스가 맞는지 묻습니다.프리팹을 만들거나 업데이트할 때, 레벨 시퀸스를 검색하여 프리팹 안에 있는 액터로의 리퍼런스가 있는지 확인합니다. 있으면 계층구조 내 전부를 포함하는 최상위 시퀸스를 찾은 다음, 이 프리팹에 사용하기 알맞은 시퀸스인지 물어 옵니다:

Prefab_09_PrefabKismet.jpg

를 선택하면 프리팹에 없는 액터에 대한 리퍼런스가 이 시퀸스 안에 있는지 추가적으로 확인합니다. 이 경우 경고를 표시하고 해당 시퀸스를 프리팹에 포함시키지 않습니다.

키즈멧 시퀸스가 있는 프리팹을 레벨에 놓을 때는, 키즈멧 시퀸스를 Prefabs 라는 최상위 서브시퀸스에 인스턴싱합니다. 레벨에 있는 각 프리팹 인스턴스는 자체적으로 관련된 키즈멧 시퀸스 사본을 갖고 있습니다. 프리팹이 업데이트되면 각 인스턴스에 대한 키즈멧 시퀸스는 프리팹에 있는 것으로 완전히 대치되므로, 인스턴스별 키즈멧 시퀸스를 커스터마이징할 수는 없습니다. 그러나 프리팹의 키즈멧 시퀸스에 입력, 출력, 변수 단자를 추가하는 것은 가능합니다. 이런 식으로 레벨 디자이너에게 함수성을 노출시킬 수 있습니다. 이런 것에 대한 예로는, 문을 잠그고 여는 입력과, 문이 열릴 때마다 발동되는 출력을 노출시키는 시퀸스를 갖는 문 프리팹을 들 수 있겠습니다.

프리팹을 일반 액터로 되돌리기


프리팹을 선택한 다음 우클릭하고 맥락 메뉴에서 '프리팹 인스턴스를 일반 액터로 변환' 옵션을 선택합니다. 그러면 프리팹 인스턴스를 지우고 프리팹 액터 전부를 일반 액터로 다시 변환합니다.

Prefab_08_PrefabsContextMenu.jpg

프리팹 꼼수


  • 프리팹 인스턴스의 일부인 액터를 선택한 경우, Shift+P 를 누르면 해당 인스턴스에 속하는 액터를 전부 선택할 수 있습니다. 단축 메뉴에서 프리팹의 모든 액터 선택 옵션을 선택해도 됩니다.
  • 프리팹 인스턴스가 선택된 경우 키즈멧에서 프리팹 인스턴스에 대한 시퀸스 열기 를 선택하면, 키즈멧 을 열고 해당 인스턴스의 서브시퀸스에 바로 점프할 수 있습니다.