문서의 이전 판입니다!


프리팹(Prefabs)

프리팹(Prefab)은 하나의 에셋(asset)으로 프로젝트 뷰에 저장되어 있는 재사용 가능한게임오브젝트로써 프리팹은 여러 개의 씬에 추가될 수 있으며 씬당 여러 번 추가되어질 수 있다. 프리팹을 씬에 삽입할 때 그것의 instance가 생성되어 진다. 모든 프리팹 인스턴스들은 본래의 프리팹에 연결되어지며 근본적으로 본래의 프리팹의 복제가 되는 것이다. 프로젝트에 몇 개의 인스턴스가 있는지에 상관없이 프리팹이 수정되면 모든 인스턴스들에 그 변화가 적용된다.

프리팹(Prefabs) 생성

프리팹을 생성하기 위해서는 메뉴를 사용해서 새로운 빈 프리팹를 만들어야만 한다. 이런 빈 프리팹은 게임오브젝트들을 포함하고 있지 않으며 인스턴스를 생성할 수도 없다. 새로운 프리팹은 게임오브젝트 데이터로 채워지기를 기다리고 있는 빈 컨테이너로서 생각할 수 있다.

새로운 빈 프리팹. 게임오브젝트로 채워지기 전까지 인스턴스를 생성 할 수 없다

프리팹을 채우기 위해서는 씬에서 생성되어진 게임오브젝트를 사용한다.

  1. 메뉴바에서 Assets→Create→Prefab 을 선택하고 새로운 프리팹의 이름을 정한다.
  2. Hierarchy View에서 프리팹에 만들어 넣고 싶은 게임오브젝트를 선택한다.
  3. Hierarchy로 부터 게임오브젝트를 ProjectView안에 새로운 프리팹으로 끌어 놓기(Drag & drop)를 한다.

위 과정을 수행한 후에 게임오브젝트와 모든 자식 객체들은 프리팹 데이타 안에 복사되어 진다. 이제 프리팹은 여러 개의 인스턴스에서 재사용될 수 있다. Hierarchy안의 본래 게임오브젝트는 이제 프리팹의 인스턴스가 된다.

프리팹 인스턴스(Prefab Instances)

현재의 에서 프리팹 인스턴스를 생성하기 위해서는 프로젝트 뷰로 부터 씬 또는 Hierarchy View로 프리팹을 끌어 놓다. 그 인스턴스는 프리팹에 연결 되어지며 Hierarchy View에서 그것의 이름에 사용되어진 파란 텍스트로 표시되어 진다.

세 개의 게임오브젝트들이 프리팹들에 연결되어 있고 한 개는 연결되어 있지 않는다.

  • 하나의 프리팹 인스턴스가 선택되어 있고 모든 인스턴스에게 영향을 미치는 변화를 주고자 한다면, 소스 프리팹(source Prefab)을 선택하기 위해 인스펙터에 있는 Select 버튼을 클릭한다.
  • 스크립트로 부터 프리팹들을 인스턴스화 하는 것에 대한 정보는 Instantiating Prefabs 페이지에서 찾아 볼 수 있다.

상속

상속(Inheritance)은 소스 프리팹(source Prefab)이 변할 때마다 이러한 변화가 모든 연결된 게임오브젝트들에게도 영항을 미친다는 것을 의미한다. 예를 들어, 프리팹에 새로운 스크립트를 추가하면, 모든 연결된 게임오브젝트에게도 즉시 그 스크립트가 포함 되어질 것이다. 그러나 모든 연결 관계를 온전히 유지하면서 하나의 인스턴스의 특성을 변화시킬 수 있다. 하나의 프리팹 인스턴스의 어떠한 특성을 변화시키면 그 변수의 이름이 굵은 글꼴로 표현되는 것을 보게될 것이다. 그 변수는 이제 덮어 씌여(override) 진것이다. 모든 덮어 씌여진(override) 특성은 소스 프리팹(source Prefab)에서의 변화에 영향받지 않을 것이다.

이것은 프리팹 링크를 깨뜨리지 않으면서 그들의 소스 프리팹들로 부터 그들을 고유하게 만들기 위해 프리팹 인스턴스들을 변경시키는 것을 가능하게 한다.

어떠한 overrides도 이루어지지 않은 하나의 연결된 게임오브젝트

여러개의 overrides(굵은 글씨체)가 이루어진 하나의 연결된 게임오브젝트

  • 소스 프리팹(source Prefab)을 갱신하고 모든 인스턴스들을 새로운 overridden 값들로 갱신하려면, 인스펙터에 있는 Apply 버튼을 클릭한다.
  • 어떤 특정 인스턴스의 모든 overrides를 제거하기 위해서는 Revert 버튼을 클릭한다.

프리팹 연결의 파괴와 복구

하나의 인스턴스와 그것의 소스 프리팹(source Prefab)사이의 연결을 끊는 특정한 방법들이 있지만 그 연결은 항상 다시 복구될 수 있다. 그 연결을 파괴하는 방법들에는 다음과 같은 것들이 있다:

  • 컴포넌트의 추가 또는 제거
  • 자식 게임오브젝트의 추가 또는 제거

이러한 방법들은 연결을 파괴하는 것에 대한 주의/확인 메세지를 유발할 것이다. 확인을 하면 연결은 파괴될 것이며소스 프리팹의 변화는 더이상 그 연결이 파괴된 인스턴스에 영향을 미치지 않을 것이다. 그 연결을 복구하기 위해서는 그 인스턴스의 인스펙터에 있는 Reconnect 또는 Apply 버튼을 클릭하면 된다.

  • Reconnect는 소스 프리팹과 다른 점들을 모두 버릴 것이다.
  • Apply는 소스 프리팹으로 모든 다른 것들을 복사할 것이다. (그 후에 모든 다른 프리팹 인스턴스들로도)

불러오기한 프리팹(Imported Prefabs)

에셋(Assets) 폴더에 하나의 메쉬 에셋(mesh asset)을 놓을 때, Unity는 자동으로 그 파일을 불러오고 그 메쉬밖의 하나의 프리팹과 유사하게 보이는 것을 생성한다. 이것은 실제 프리팹이 아니고 단순히 그 에셋 파일 그 자체이다. 에셋의 인스턴스화 등의 작업은 보통의 프리팹들에서 작업 시 존재 하지 않았던 제약을 만듭니다.

에셋 아이콘은 프리팹의 아이콘과 다른 것에 주목하라

에셋은 보통 프리팹 대신 소스 에셋(source asset)에 연결된 게임오브젝트로서 씬에서 인스턴스화 된다. 구성요소(Components)들은 이런 게임오브젝트에서 정상적으로 추가되어 지고 제거되어 질 수 있다. 그러나 이것은 그 에셋 파일 자체에 데이터를 추가하는 것이기 때문에 그 에셋 자체에는 어떠한 변화도 적용할 수 없다. 재사용하고 싶은 어떤 것을 생성하고 싶다면 위 “Creating Prefabs"에 나타나있는 과정들을 실행 하면서 하나의 프리팹안에 에셋 인스턴스를 만들어야만 한다.

  • 하나의 에셋의 인스턴스를 선택했다면, 그 인스펙터의 Apply 버튼은 Edit 버튼으로 대체되어 진다. 이 버튼을 클릭하면 에셋을 위한 편집 어플리케이션을 시작할 수 있다. (Maya 또는 Max)

역링크