Prefabs
Prefab은 asset의 한 타입입니다. -- 프로젝트뷰에 저장된 재사용이 가능한 게임오브젝트라고 할 수 있습니다. Prefabs은 어떤 수의 씬에도 삽입이 가능하고 한 씬에서 여러 번 사용도 가능합니다. 씬에 Prefab을 추가할 때 그것의 instance를 만드는 것입니다. 모든 Prefab instance는 원본 Prefab에 링크가 되어 있고 그 원본의 본질적인 복제입니다. 작업 중인 프로젝트에 얼마나 많은 instance가 있든 Prefab에 일어난 모든 변화는 적용된 모든 instance에 동일하게 적용됩니다.
Prefabs 만들기
Prefab을 만들기 위해서는 메뉴를 통해 일단 새로운 '비어있는' Prefab을 만들어야 합니다. 이 빈 Prefab은 아무런 게임 오브젝트도 포함하고 있지 않으며 그것의 instance도 만들 수 없습니다. 이 새로운 Prefab을 게임 오브젝트 데이터로 채워지길 기다리는 비어있는 컨테이너로 생각하면 됩니다.

새로운, 비어 있는 Prefab. 게임 오브젝트로 채워지기 전까진 instance를 만들 수 없습니다.
Prefab을 채우려면 당신이 씬에서 만든 GameObject를 이용합니다.
- 를 통해 새로운 Prefab의 이름을 정해줍니다.
- Hierarchy View에서 Prefab으로 만들고자 하는 게임 오브젝트를 선택합니다.
- 선택한 게임 오브젝트를 드래그하여 Project View에 있는 Prefab에 넣습니다.
이 과정을 이행했다면 해당 게임 오브젝트와 그에 따른 모든 하위 오브젝트들은 Prefab 데이터로 복사된 것입니다. 이제 이 Prefab은 복수의 instance로 재사용 될 수 있습니다. Hierarchy에 있는 원본 게임 오브젝트는 이제 Prefab의 instance가 된 것입니다.
Prefab Instances
현재의 씬에서 Prefab instance를 만들려면 Project View에서 Prefab을 드래그하여 Scene이나 Hierarchy View에 넣으십시오. 이 instance는 Prefab에 링크되었고 Hierarchy View에 그 이름이 파란색 텍스트로 표시된 것으로 이를 알 수 있습니다.

파란색 텍스트로 보여지는 게임 오브젝트는 Prefab에 링크된 것이고 나머지 하나는 링크되지 않은 것입니다.
- Prefab instance를 선택했고 그에 적용할 모든 변화를 다른 모든 instance에 적용하기 원한다면 인스펙터에 있는 Prefab을 선택할 수 있습니다.
- 스크립트로부터 prefab을 복사하는 것에 대한 정보는 Instantiating Prefabs 페이지를 참고하십시오.
Inheritance
Inheritance란(이하 계승) 원본 Prefab이 변화할 때 그 변화가 링크된 모든 게임 오브젝트에 적용되는 것을 의미합니다. 예를 들어 Prefab에 새로운 스크립트를 적용시켰을 때 링크된 모든 게임 오브젝트들은 그와 동일한 스크립트가 적용되게 됩니다. 그러나 링크를 유지한 채 하나의 instance의 속성만 변화시킬 수도 있습니다. Prefab instance의 아무 속성이나 바꿔준 뒤 변화되는 이름들을 살펴보십시오. 변화된 이름들은 override되어 이제 원본 Prefab의 변화에 영향을 받지 않습니다.
이는 Prefab instance를 원본과의 링크를 유지한 채 유니크하게 만들 수 있는 방법입니다.

아무런 override도 활성화되지 않은 링크된 게임 오브젝트

하나의 override가 활성화된 링크된 게임 오브젝트
- 원본 Prefab을 업데이트 하고 모든 instance들이 새로운 override를 적용하고 싶다면 인스펙터의 버튼을 클릭함으로써 가능하게 됩니다.
- 특정 instance에 모든 override를 제거하고 싶다면
.
Prefab 링크의 제거와 복구
원본 Prefab과 단일 intance 사이의 링크를 깨뜨리는 특정 행위들이 있습니다. 하지만 링크는 언제든지 복구될 수 있습니다. 링크를 깨뜨리는 행위는:
- 구성요소(Component)의 제거나 추가
- 하위 게임 오브젝트의 추가나 제거
이 행동들은 링크가 깨어지는 것에 대한 경고/확인 메세지가 나타나게 할 것입니다. 이 작업을 승인하면 링크가 깨지게 되고 원본 Prefab에 적용되는 변화들이 링크가 깨어진 instance에 더 이상 적용되지 않게 됩니다. 링크를 복구하려면
instance의 인스펙터에서 버튼을 사용하면 됩니다.
는 원본 Prefab과 동일하지 않은 모든 요소들을 원본 Prefab에 복사할 것입니다. (그럼으로써 다른 모든 Prefab instance에게도 함께 적용될 것입니다.)
Prefab 임포트하기
매시로 된 Asset을 Assets folder로 불러올 때, 유니티는 자동적으로 그 파일을 임포트하고 Prefab과 비슷하게 보이는 무언가를 매시 외부에 생성할 것입니다. 이것은 사실 Prefab이 아닙니다. 이는 asset 파일 그 자신입니다. asset을 복사하거나 asset을 가지고 작업하는 것은 정상적인 Prefab을 가지고 작업하는 것에 비해 제한이 있음을 보여줍니다.

asset 아이콘이 Prefab 아이콘과 살짝 다른 것을 주목하십시오.
asset은 정상적인 Prefab을 대신하여 원본 asset에 링크된 게임 오브젝트로서 씬에 복제되었습니다. 구성요소(Components)는 보통 때처럼 이 게임 오브젝트로부터 제거되거나 추가할 수 있습니다. 그러나 asset 그 자신에게는 변경된 사항을 적용할 수 없는데 이는 asset 파일 그 자체에 데이터를 추가하기 때문입니다. 만약 재사용이 가능한 무언가를 만든다면 "Creating Prefabs" 하단에 나열된 과정을 거쳐 asset의 instance를 Prefab에 만들어 주십시오.
- asset의 instance를 선택했다면 인스펙터의 버튼으로 교체됩니다. 이를 클릭하게 되면 해당 asset을 편집할 수 있는 프로그램이 실행되게 됩니다. (Maya나 Max와 같은).
'Game Engine > Unity' 카테고리의 다른 글
[Unity Manual - Building Scenes] Lights(라이트 / 조명) (0) | 2010.08.09 |
---|---|
[Unity Manual - Building Scenes] Component(구성요소) 사용하기 (0) | 2010.08.09 |
[Unity Manual - Building Scenes] 게임 오브젝트 (0) | 2010.08.09 |
[Unity Manual - Unity Basics] 씬 만들기 (0) | 2010.08.09 |
[Unity Manual - Unity Basics] Asset을 통한 작업 (0) | 2010.08.09 |