프리팹 배리언트는 프리팹의 사전 정의된 배리에이션 집합이 필요할 때 유용합니다.
예를 들어 게임 내에 동일한 기본 GermSlimeTarget 프리팹에 기반한 여러 타입의 GermSlimeTarget을 만든 후 그중 일부 GermSlimeTarget이 아이템을 운반하거나, 다른 속도로 움직이거나, 추가 음향 효과를 내도록 만들어야 할 경우가 있습니다.
이러한 경우 모든 GermSlimeTarget이 공유할 기본 액션을 초기 GermSlimeTarget 프리팹이 모두 수행하도록 설정한 후 다음을 위한 여러 개의 프리팹 배리언트를 생성할 수 있습니다.
속도를 변경하도록 스크립트에 프로퍼티 오버라이드를 사용하여 GermSlimeTarget이 더 빠르게 움직이도록 합니다.
추가 게임 오브젝트를 GermSlimeTarget의 팔에 연결하여 GermSlimeTarget이 아이템을 운반하도록 만듭니다.
철벅철벅 소리를 재생하는 AudioSource 컴포넌트를 추가하여 GermSlimeTarget에 달팽이가 움직이는 듯한 소리를 더할 수 있습니다.
프리팹 배리언트는 다른 프리팹(기본 프리팹이라고 불림)의 프로퍼티를 상속합니다. 프리팹 배리언트에 적용된 오버라이드는 기본 프리팹의 값보다 더 우선시됩니다. 프리팹 배리언트는 다른 프리팹(모델 프리팹, 기타 프리팹 배리언트 등)을 기본 프리팹으로 가질 수 있습니다.
여러 가지 방법으로 다른 프리팹에 기반한 프리팹 배리언트를 생성할 수 있습니다.
Project 뷰에서 프리팹을 마우스 오른쪽 버튼으로 클릭한 후 Create > Prefab Variant 를 선택합니다. 그러면 선택한 프리팹의 배리언트가 생성됩니다. 이 프리팹 배리언트에는 오버라이드가 아직 없습니다. 프리팹 모드에서 프리팹 배리언트를 열어 오버라이드를 추가할 수 있습니다.
Hierarchy 창의 프리팹 인스턴스를 Project 창으로 드래그할 수도 있습니다. 이렇게 하면 새로운 원본 프리팹 또는 프리팹 배리언트를 생성할지 묻는 다이얼로그가 나타납니다. 프리팹 배리언트를 선택하면 드래그한 프리팹 인스턴스에 기반한 새 프리팹 배리언트가 생성됩니다. 해당 인스턴스에 있는 모든 오버라이드는 새 프리팹 배리언트 안에 포함됩니다. 프리팹 모드에서 프리팹 배리언트를 열어 오버라이드를 추가, 편집, 제거할 수 있습니다.
프리팹 배리언트는 화살표로 장식된 파란색 프리팹 아이콘으로 표시됩니다.
프리팹 모드에서 프리팹 배리언트를 열면 루트가 파란색 프리팹 아이콘이 있는 프리팹 인스턴스로 표시됩니다. 이 프리팹 인스턴스는 프리팹 배리언트가 상속받는 기본 프리팹을 나타내며, 프리팹 배리언트 자체를 나타내는 것은 아닙니다. 프리팹 배리언트에 대한 모든 수정 사항은 이 기본 프리팹에 대한 오버라이드가 되어 배리언트에 존재합니다.
위 스크린샷에서 GermSlimeTarget With GermOBlaster 루트 게임 오브젝트를 선택하고 인스펙터에서 Select 버튼을 클릭하면 GermSlimeTarget With GermOBlaster 배리언트가 아니라 기본 GermSlimeTarget 프리팹이 선택됩니다. 이는 프리팹 인스턴스가 기본 GermSlimeTarget 프리팹의 인스턴스이고 Select 버튼은 항상 해당 인스턴스가 상속되는 프리팹 에셋을 선택하기 때문입니다.
다른 프리팹 인스턴스와 마찬가지로, 프리팹 배리언트에 프리팹 오버라이드를 사용할 수 있습니다(예: 수정된 프로퍼티 값, 추가된 컴포넌트, 제거된 컴포넌트, 추가된 자식 게임 오브젝트 등). 여기에도 동일한 제한 사항이 적용됩니다. 기본 프리팹에서 상속받은 프리팹 배리언트의 게임 오브젝트는 부모를 변경할 수 없으며, 기본 프리팹에 존재하는 프리팹 배리언트의 게임 오브젝트를 제거할 수 없습니다. 하지만 게임 오브젝트를 프로퍼티 오버라이드로 비활성화하여 게임 오브젝트를 제거한 것과 동일한 효과를 얻을 수 있습니다.
참고: 프리팹 모드에서 프리팹 배리언트를 편집할 때 Overrides 드롭다운 창 또는 컨텍스트 메뉴를 통해 이러한 오버라이드를 적용하면 배리언트의 배리에이션이 기본 프리팹 에셋에 적용될 수도 있다는 점에 유의해야 합니다. 이는 대부분 원하지 않는 결과입니다. 프리팹 배리언트의 주요 목적은 유의미하고 재사용이 가능한 오버라이드 컬렉션을 편리하게 저장하도록 지원하는 것입니다. 이러한 이유로 프리팹 배리언트는 대개 오버라이드로 유지되고, 기본 프리팹 에셋에 적용되지 않습니다. 쉽게 설명하자면, 추가 GermOBlaster 게임 오브젝트를 기본 프리팹 에셋(“GermSlimeTarget”)에 적용하면 프리팹 에셋에도 GermOBlaster 가 포함됩니다. GermSlimeTarget With GermOBlaster 배리언트의 존재 목적은 이 배리에이션이 GermOBlaster를 나르게 만들기 위함이므로, 추가된 GermOBlaster 게임 오브젝트는 프리팹 배리언트 내에 오버라이드로 남아 있어야 합니다.
Overrides 드롭다운 창을 열면 헤더에서 오버라이드가 적용되는 오브젝트와 오버라이드가 존재하는 컨텍스트를 확인할 수 있습니다. 프리팹 배리언트의 경우 오버라이드가 기본 프리팹에 적용되고 프리팹 배리언트 내에 존재한다고 헤더에 표시됩니다. 이 점을 분명히 하기 위해 Apply All 버튼도 Apply All to Base 라고 표시됩니다.
2018–07–31 페이지 게시됨
2018.3에서 네스티드 프리팹과 프리팹 배리언트 추가됨
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.