네스티드 프리팹
여러 레벨의 오버라이드

프리팹 배리언트

프리팹 배리언트는 프리팹의 사전 정의된 배리에이션 집합이 필요할 때 유용합니다.

예를 들어 게임 내에 동일한 기본 GermSlimeTarget 프리팹에 기반한 여러 타입의 GermSlimeTarget을 만든 후 그중 일부 GermSlimeTarget이 아이템을 운반하거나, 다른 속도로 움직이거나, 추가 음향 효과를 내도록 만들어야 할 경우가 있습니다.

이러한 경우 모든 GermSlimeTarget이 공유할 기본 액션을 초기 GermSlimeTarget 프리팹이 모두 수행하도록 설정한 후 다음을 위한 여러 개의 프리팹 배리언트를 생성할 수 있습니다.

  • 속도를 변경하도록 스크립트에 프로퍼티 오버라이드를 사용하여 GermSlimeTarget이 더 빠르게 움직이도록 합니다.

  • 추가 게임 오브젝트를 GermSlimeTarget의 팔에 연결하여 GermSlimeTarget이 아이템을 운반하도록 만듭니다.

  • 철벅철벅 소리를 재생하는 AudioSource 컴포넌트를 추가하여 GermSlimeTarget에 달팽이가 움직이는 듯한 소리를 더할 수 있습니다.

프리팹 배리언트는 다른 프리팹(기본 프리팹이라고 불림)의 프로퍼티를 상속합니다. 프리팹 배리언트에 적용된 오버라이드는 기본 프리팹의 값보다 더 우선시됩니다. 프리팹 배리언트는 다른 프리팹(모델 프리팹, 기타 프리팹 배리언트 등)을 기본 프리팹으로 가질 수 있습니다.

프리팹 배리언트 생성

여러 가지 방법으로 다른 프리팹에 기반한 프리팹 배리언트를 생성할 수 있습니다.

Project 뷰에서 프리팹을 마우스 오른쪽 버튼으로 클릭한 후 Create > Prefab Variant 를 선택합니다. 그러면 선택한 프리팹의 배리언트가 생성됩니다. 이 프리팹 배리언트에는 오버라이드가 아직 없습니다. 프리팹 모드에서 프리팹 배리언트를 열어 오버라이드를 추가할 수 있습니다.

Hierarchy 창의 프리팹 인스턴스를 Project 창으로 드래그할 수도 있습니다. 이렇게 하면 새로운 원본 프리팹 또는 프리팹 배리언트를 생성할지 묻는 다이얼로그가 나타납니다. 프리팹 배리언트를 선택하면 드래그한 프리팹 인스턴스에 기반한 새 프리팹 배리언트가 생성됩니다. 해당 인스턴스에 있는 모든 오버라이드는 새 프리팹 배리언트 안에 포함됩니다. 프리팹 모드에서 프리팹 배리언트를 열어 오버라이드를 추가, 편집, 제거할 수 있습니다.

프리팹 배리언트는 화살표로 장식된 파란색 프리팹 아이콘으로 표시됩니다.

계층 창에 표시된 기본 GermSlimeTarget 프리팹과 GermSlimeTarget With GermOBlaster라고 불리는 해당 프리팹의 배리언트
계층 창에 표시된 기본 GermSlimeTarget 프리팹과 “GermSlimeTarget With GermOBlaster”라고 불리는 해당 프리팹의 배리언트

프리팹 배리언트 편집

프리팹 모드에서 프리팹 배리언트를 열면 루트가 파란색 프리팹 아이콘이 있는 프리팹 인스턴스로 표시됩니다. 이 프리팹 인스턴스는 프리팹 배리언트가 상속받는 기본 프리팹을 나타내며, 프리팹 배리언트 자체를 나타내는 것은 아닙니다. 프리팹 배리언트에 대한 모든 수정 사항은 이 기본 프리팹에 대한 오버라이드가 되어 배리언트에 존재합니다.

프리팹 모드의 GermSlimeTarget With GermOBlaster 프리팹 배리언트. GermOBlaster 프리팹이 기본 프리팹에 오버라이드로 추가됨
프리팹 모드의 “GermSlimeTarget With GermOBlaster” 프리팹 배리언트. “GermOBlaster” 프리팹이 기본 프리팹에 오버라이드로 추가됨

위 스크린샷에서 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:

  • 네스티드 프리팹
    여러 레벨의 오버라이드