프리팹 배리언트는 프리팹의 사전 정의된 배리에이션 집합이 필요할 때 유용합니다.
예를 들어 게임에 모두 동일한 기본 GermSlimeTarget 프리팹을 기반으로 하는 여러 가지 유형의 GermSlimeTarget을 사용할 수 있습니다. 하지만 일부 GermSlimeTarget은 아이템을 운반하거나, 일부는 다른 속도로 이동하거나, 일부는 추가 음향 효과를 방출하도록 만들 수 있습니다.
이러한 경우 모든 GermSlimeTarget이 공유할 기본 액션을 초기 GermSlimeTarget 프리팹이 모두 수행하도록 설정한 후 다음을 위한 여러 개의 프리팹 배리언트를 생성할 수 있습니다.
속도를 변경하도록 스크립트에 프로퍼티 오버라이드를 사용하여 GermSlimeTarget이 더 빠르게 움직이도록 합니다.
추가 게임 오브젝트를 GermSlimeTarget의 팔에 연결하여 GermSlimeTarget이 아이템을 운반하도록 만듭니다.
철벅철벅 소리를 재생하는 AudioSource 컴포넌트를 추가하여 GermSlimeTarget에 달팽이가 움직이는 듯한 소리를 더할 수 있습니다.
프리팹 배리언트는 베이스라는 또 다른 프리팹의 프로퍼티를 상속합니다. 프리팹 배리언트에 적용된 오버라이드는 베이스 프리팹의 값보다 우선권을 갖습니다. 프리팹 배리언트는 모델 프리팹이나 기타 프리팹 배리언트를 비롯한 다른 프리팹을 베이스로 가질 수 있습니다.
여러 가지 방법으로 다른 프리팹에 기반한 프리팹 배리언트를 생성할 수 있습니다.
프로젝트 뷰에서 프리팹을 오른쪽 클릭하고 Create > Prefab Variant 를 선택하면 됩니다. 그러면 선택한 프리팹의 배리언트가 생성되며, 처음에는 오버라이드가 없습니다. 프리팹 모드에서 프리팹 배리언트를 열어 오버라이드를 추가할 수 있습니다.
계층 창에서 프리팹 인스턴스를 프로젝트 창으로 드래그해도 됩니다. 이렇게 하면 새 원본 프리팹 또는 프리팹 배리언트를 생성할지 묻는 다이얼로그가 표시됩니다. 프리팹 배리언트를 선택하면 드래그한 프리팹 인스턴스에 따라 새 프리팹 배리언트가 생성됩니다. 해당 인스턴스에 대한 모든 오버라이드는 이제 새로운 프리팹 배리언트 내에 있게 됩니다. 프리팹 모드에서 열어 추가 오버라이드를 추가하거나 편집하거나 제거할 수 있습니다.
프리팹 배리언트는 화살표로 장식된 파란색 프리팹 아이콘으로 표시됩니다.
프리팹 모드에서 프리팹 배리언트를 열면 루트가 파란색 프리팹 아이콘이 있는 프리팹 인스턴스로 표시됩니다. 이 프리팹 인스턴스는 프리팹 배리언트가 상속하는 베이스 프리팹을 나타내며, 프리팹 배리언트 자체를 나타내지는 않습니다. 프리팹 배리언트에 대한 모든 편집은 배리언트에 존재하는 이 베이스의 오버라이드가 됩니다.
위 스크린샷에서 GermSlimeTarget With GermOBlaster 루트 게임 오브젝트를 선택하고 인스펙터에서 Select 버튼을 클릭하면 GermSlimeTarget With GermOBlaster 배리언트가 아니라 베이스 GermSlimeTarget 프리팹이 선택됩니다. 이는 프리팹 인스턴스가 베이스 GermSlimeTarget 프리팹의 인스턴스고 Select 버튼은 항상 해당 인스턴스가 상속되는 프리팹 에셋을 선택하기 때문입니다.
다른 프리팹 인스턴스와 마찬가지로 수정된 프로퍼티 값, 추가된 컴포넌트, 제거된 컴포넌트, 추가된 자식 게임 오브젝트 등 프리팹 배리언트에서 프리팹 오버라이드를 사용할 수 있습니다. 동일한 제한 사항도 있습니다. 베이스 프리팹에서 파생되는 게임 오브젝트는 프리팹 배리언트에서 부모를 변경할 수 없습니다. 또한 베이스 프리팹에 있는 프리팹 배리언트에서 게임 오브젝트를 제거할 수 없습니다. 하지만 프로퍼티 오버라이드로 게임 오브젝트를 비활성화하여 게임 오브젝트 제거와 동일한 효과를 얻을 수 있습니다.
참고: 프리팹 모드에서 프리팹 배리언트를 편집할 때 오버라이드 드롭다운 창 또는 컨텍스트 메뉴를 통해 이러한 오버라이드를 적용하면 배리언트의 배리에이션이 베이스 프리팹 에셋에 적용됩니다. 이는 바람직하지 않은 경우가 많습니다. 프리팹 배리언트의 목적은 유의미하고 재사용 가능한 오버라이드 컬렉션을 편리하게 저장하는 것입니다. 따라서 일반적으로 베이스 프리팹 에셋에 적용되지 않고 오버라이드로 유지되어야 합니다. 이 점을 설명하기 위해 추가 GermOBlaster 게임 오브젝트를 베이스 프리팹 에셋(‘GermSlimeTarget’)에 적용한다면 프리팹 에셋에는 GermOBlaster 도 포함됩니다. GermSlimeTarget With GermOBlaster 배리언트의 요점은 이 배리에이션만 GermOBlaster를 가진다는 것입니다. 따라서 추가된 GermOBlaster 게임 오브젝트는 프리팹 배리언트 내에 오버라이드로 남겨 두어야 합니다.
오버라이드 드롭다운 창을 열면 오버라이드가 어떤 오브젝트에 있는지, 오버라이드가 어떤 컨텍스트에 있는지 헤더에서 항상 확인할 수 있습니다. 프리팹 배리언트의 경우 헤더에 오버라이드가 베이스 프리팹에 있고 프리팹 배리언트에 존재한다고 표시됩니다. 더욱 명확하게 하기 위해, Apply All 버튼에도 Apply All to Base 가 표시됩니다.
2018–07–31
2018.3에 중첩된 프리팹 및 프리팹 배리언트 추가