프리팹은 간단하게 이야기해서 게임 오브젝트와 거기에 붙여진 컴포넌트
그리고 그 안에 있는 프로퍼티들을 애셋의 형태로 저장하는 것입니다.
테스트를 위해 프리팹의 원본을 준비해 줍니다.
저는 박스 3개를 이용해서 탱크모양의 게임 오브젝트를 만들겁니다.
박스 3개를
탱크라는 부모 게임 오브젝트를 만들어서 넣어줍니다.


우선 Assets 폴더 아래에 Resources -> Prefabs 폴더를 만들어서
만든 프리팹을 넣어 관리하겠습니다.
프리팹을 등록하는 일은 간단합니다.
하이얼아키 창에 있는 탱크를 Prefabs 폴더안에 드래그&드롭하여 놓으면
프리팹을 등록할 수 있습니다.

다른 프리팹 내에 프리팹 인스턴스를 포함할 수 있습니다.
이것을 네스티드 프리팹이라고 부릅니다.
사실 탱크를 만드는 작업과 다를건 없습니다.
다만 재료가 서로 다른 프리팹일 뿐입니다.



상속의 개념과 비슷하게 탱크를 상속받은 강화 탱크 처럼
프리팹의 변형을 만들때 사용하는 기능입니다.
만드는 방법은 원본 프리팹 인스턴스를 씬에 하나 생성합니다.

이 원본으로 만든 프리팹을 다시 드래그&드롭해서 폴더에 넣습니다.
그러면 메시지가 나옵니다.

이 메시지의 내용은 새로운 독립적인 프리팹을 만들것인지
아니면 프리팹의 변형을 만들것인지 물어보는 것입니다.
{Original Prefab}을 클릭하면 새로운 프리팹을 만듭니다.
새로운 프리팹은 기존 프리팹과는 독립적 이므로
기존 프리팹을 변형해도 영향을 받지 않습니다.
저희는 변형을 만들것이니 두번째 버튼인 {Prefab Variants}를 클릭합니다.

그러면 기존 프리팹과는 조금 다른 아이콘을 가진 프리팹이 나타납니다.
이름은 기존 이름에 Variant가 붙습니다.
프리팹 배리언트는 기존 프리팹을 상속한 개념이므로
기존의 프리팹을 변경하면 영향을 받습니다.
예를들어 기존 Tank의 프로퍼티를 수정하여 크기를 키운다고 했을때,
Tank Variant도 같이 크기가 커지게 됩니다.

프리팹을 씬 이곳저곳에 배치해 봅시다.
씬에 실제 게임 오브젝트로 배치된 프리팹을 프리팹 인스턴스라고 부릅니다.

프로젝트 뷰에서 원본 프리팹을 선택하면 씬의 배경이 파란색으로 변하고 원본 프리팹만 남게됩니다.
이 공간을 프리팹 모드라고 합니다.
프리팹 모드는 원본 프리팹을 변경하기 쉽게 제공하는 가상의 공간입니다.
프리팹 모드에서 프리팹의 프로퍼티를 수정하면
씬에 배치된 모든 프리팹 인스턴스의 프로퍼티가 함께 변경됩니다.

(오토 세이브 체크박스에 체크되어 있다면 따로 저장하지 않아도 프로퍼티 변경시 자동 저장됩니다.)

하지만 씬에 배치된 각각의 프리팹 인스턴스의 프로퍼티를 수정한다면
원본 프리팹에는 적용되지 않습니다.
이것을 프리팹 오버라이드라고 부릅니다.

배치된 프리팹 인스턴스를 선택하여 인스팩터뷰를 보면
프리팹에 관련된 UI가 생성되어있습니다.
{Open} 버튼은 프리팹의 원본을 수정할 수 있는 창을 엽니다.
{Select} 버튼은 프로젝트 뷰에서 원본 프리팹이 있는곳을 알려줍니다.

{Overrides} 버튼은 만약 프리팹 인스턴스에 원본 프리팹과 달라진 점이 있으면 그 변경된 내용이 나타납니다.
이곳에서 {Revert All}을 선택하면 프리팹 인스턴스의 변경사항이 초기화 되고 원본 프리팹의 값으로 돌아갑니다.
반대로 {Apply All}을 선택하면 프리팹 인스턴스의 수정사항이 원본 프리팹에 덮어 씌워집니다.