인스턴스 오버라이드(Instance overrides) 를 이용하면 프리팹 인스턴스 간에 배리에이션을 만들고 인스턴스를 동일한 프리팹 에셋에 연결할 수 있습니다.
프리팹 에셋을 수정하면 변경된 사항이 모든 인스턴스에 반영됩니다. 하지만 개별 인스턴스를 직접 수정할 수도 있습니다. 이렇게 하면 해당 인스턴스에 인스턴스 오버라이드 가 생성됩니다.
게임 내 여러 레벨에 배치한 “Robot” 프리팹 에셋이 있는 경우를 예로 들 수 있습니다. 하지만 이 경우 “Robot”의 각 인스턴스는 다른 속도값을 가지며 다른 오디오 클립이 할당됩니다.
인스턴스 오버라이드 에는 네 가지 유형이 있습니다.
프로퍼티 값 오버라이드
컴포넌트 추가
컴포넌트 제거
자식 게임 오브젝트 추가
프리팹 인스턴스에는 일부 한계가 있습니다. 프리팹에 속한 게임 오브젝트의 부모를 변경할 수 없고, 프리팹에 속한 게임 오브젝트는 제거할 수 없습니다. 하지만 게임 오브젝트를 제거하는 대신 비활성화할 수 있습니다(프로퍼티 오버라이드로 간주됨).
Inspector 창에서 인스턴스 오버라이드는 이름 레이블로 굵게 표시되고 왼쪽 여백에 파란색 줄이 나타납니다. 새 컴포넌트를 프리팹 인스턴스에 추가하면 여백의 파란색 선이 전체 컴포넌트로 확대됩니다.
컴포넌트를 추가하거나 제거하면 인스펙터에서 더하기 및 빼기 배지가 해당 아이콘에 표시되고, 게임 오브젝트를 추가하면 계층 창에서 더하기 배지가 해당 아이콘에 표시됩니다.
프리팹 인스턴스의 오버라이드된 프로퍼티 값은 언제나 프리팹 에셋의 값보다 우선권을 가집니다. 즉, 프리팹 에셋의 프로퍼티를 변경해도 해당 프로퍼티가 오버라이드된 인스턴스에는 아무 영향도 주지 않습니다.
프리팹 에셋을 변경할 때 모든 인스턴스가 예상대로 업데이트되지 않으면 해당 프로퍼티가 인스턴스에서 오버라이드되었는지 확인해야 합니다. 반드시 필요한 경우에만 인스턴스 오버라이드를 사용하는 것이 좋습니다. 프로젝트에 인스턴스 오버라이드가 너무 많으면 프리팹 에셋에 대한 변경 사항이 모든 인스턴스에 영향을 주는지 여부를 파악하기 어렵기 때문입니다.
프리팹 인스턴스의 얼라인먼트(alignment) 는 아주 특별한 경우로 다른 프로퍼티와 다르게 처리됩니다. 얼라인먼트 값은 프리팹 에셋에서 프리팹 인스턴스로 이동하지 않습니다. 즉, 명시적 인스턴스 오버라이드인 경우를 제외하고 항상 프리팹 에셋의 얼라인먼트와 다를 수 있습니다. 특히, 얼라인먼트는 프리팹 인스턴스의 루트 트랜스폼에서 Position 및 Rotation 프로퍼티를 의미하며, 사각 트랜스폼의 경우에는 여기에 Width, Height, Margins, Anchors, Pivot 프로퍼티도 포함됩니다.
이는 프리팹의 여러 인스턴스가 동일한 위치와 회전을 취해야 하는 경우가 매우 드물기 때문입니다. 대개의 경우에는 프리팹 인스턴스에 다른 위치와 회전을 지정하여 Unity가 프리팹 오버라이드로 간주하지 않도록 해야 합니다.
2018–07–31
2018.3에서 네스티드 프리팹과 프리팹 배리언트 추가됨