양쪽 이전 판이전 판다음 판 | 이전 판 |
unity:prefabs [2015/08/22 19:33] – V_L | unity:prefab [2024/03/23 01:16] (현재) – [상속] V_L |
---|
| {{tag>유니티 unity 프리팹 prefab}} |
| |
| ======프리팹(Prefab)====== |
| |
| ''프리팹(Prefab; premade fabrication)''은 에셋(asset)으로서 저장되어 있는 재사용 가능한 ''게임오브젝트''로써 게임내 어디에서나 재사용될 수 있다. 프리팹은 여러 개의 씬에 추가될 수 있으며 씬당 여러 번 추가되어질 수 있다. |
| [[learning_the_interface| |
| 프로젝트 윈도우]]에 현재 프로젝트의 모든 프리펩이 표시된다. |
| |
======프리팹(Prefabs)====== | 프리팹을 씬에 삽입할 때 그것의 ''instance''가 생성되어 진다. 모든 프리팹 인스턴스들은 본래의 프리팹에 연결되어지며 근본적으로 본래의 프리팹의 복제가 되는 것이다. 프로젝트에 몇 개의 인스턴스가 있는지에 상관없이 프리팹이 수정되면 모든 인스턴스들에 그 변화가 적용된다. |
| |
''프리팹(Prefab)''은 하나의 에셋(asset)으로 ''프로젝트 뷰''에 저장되어 있는 재사용 가능한''게임오브젝트''로써 프리팹은 여러 개의 씬에 추가될 수 있으며 씬당 여러 번 추가되어질 수 있습니다. 프리팹을 씬에 삽입할 때 그것의 ''instance''가 생성되어 집니다. 모든 프리팹 인스턴스들은 본래의 프리팹에 연결되어지며 근본적으로 본래의 프리팹의 복제가 되는 것입니다. 프로젝트에 몇 개의 인스턴스가 있는지에 상관없이 프리팹이 수정되면 모든 인스턴스들에 그 변화가 적용됩니다. | |
| |
| [[unity:instantiatingprefabs]]도 참고한다. |
| |
=====프리팹(Prefabs) 생성===== | =====프리팹(Prefabs) 생성===== |
| |
프리팹을 생성하기 위해서는 메뉴를 사용해서 새로운 빈 프리팹를 만들어야만 합니다. 이런 빈 프리팹은 게임오브젝트들을 포함하고 있지 않으며 인스턴스를 생성할 수도 없습니다. 새로운 프리팹은 게임오브젝트 데이터로 채워지기를 기다리고 있는 빈 컨테이너로서 생각할 수 있습니다. | 프리팹을 생성하기 위해서는 메뉴를 사용해서 새로운 빈 프리팹를 만들어야만 한다. 이런 빈 프리팹은 게임오브젝트들을 포함하고 있지 않으며 인스턴스를 생성할 수도 없다. 새로운 프리팹은 게임오브젝트 데이터로 채워지기를 기다리고 있는 빈 컨테이너로서 생각할 수 있다. |
| |
{{:unity3d:NewPrefab.png}} | {{:unity3d:NewPrefab.png}} |
| |
//새로운 빈 프리팹. 게임오브젝트로 채워지기 전까지 인스턴스를 생성 할 수 없습니다// | //새로운 빈 프리팹. 게임오브젝트로 채워지기 전까지 인스턴스를 생성 할 수 없다// |
| |
프리팹을 채우기 위해서는 씬에서 생성되어진 게임오브젝트를 사용합니다. | 프리팹을 채우기 위해서는 씬에서 생성되어진 게임오브젝트를 사용한다. |
- 메뉴바에서 **Assets->Create->Prefab** 을 선택하고 새로운 프리팹의 이름을 정합니다. | - 메뉴바에서 **Assets->Create->Prefab** 을 선택하고 새로운 프리팹의 이름을 정한다. |
- ''Hierarchy View''에서 프리팹에 만들어 넣고 싶은 게임오브젝트를 선택합니다. | - ''Hierarchy View''에서 프리팹에 만들어 넣고 싶은 게임오브젝트를 선택한다. |
- Hierarchy로 부터 게임오브젝트를 ProjectView안에 새로운 프리팹으로 끌어 놓기(Drag & drop)를 합니다. | - 게임오브젝트를 Hierarchy로부터 ProjectView안으로 끌어 놓기(Drag & drop)를 한다. |
| |
위 과정을 수행한 후에 게임오브젝트와 모든 자식 객체들은 프리팹 데이타 안에 복사되어 집니다. 이제 프리팹은 여러 개의 인스턴스에서 재사용될 수 있습니다. Hierarchy안의 본래 게임오브젝트는 이제 프리팹의 인스턴스가 됩니다. | 위 과정을 수행한 후에 게임오브젝트와 모든 자식 객체들은 프리팹 데이타 안에 복사되어 진다. 이제 프리팹은 여러 개의 인스턴스에서 재사용될 수 있다. Hierarchy안의 본래 게임오브젝트는 이제 프리팹의 인스턴스가 된다. |
| |
=====프리팹 인스턴스(Prefab Instances)===== | =====프리팹 인스턴스(Prefab Instances)===== |
| |
현재의 ''씬'' 에서 프리팹 인스턴스를 생성하기 위해서는 프로젝트 뷰로 부터 씬 또는 Hierarchy View로 프리팹을 끌어 놓습니다. 그 인스턴스는 프리팹에 ''연결'' 되어지며 Hierarchy View에서 그것의 이름에 사용되어진 파란 텍스트로 표시되어 집니다. | 현재의 ''씬'' 에서 프리팹 인스턴스를 생성하기 위해서는 프로젝트 뷰로 부터 씬 또는 Hierarchy View로 프리팹을 끌어 놓다. 그 인스턴스는 프리팹에 ''연결'' 되어지며 Hierarchy View에서 그것의 이름에 사용되어진 파란 텍스트로 표시되어 진다. |
| |
{{:unity3d:LinkedPrefab.png}} | {{:unity3d:LinkedPrefab.png}} |
| |
//세 개의 게임오브젝트들이 프리팹들에 연결되어 있고 한 개는 연결되어 있지 않습니다.// | //세 개의 게임오브젝트들이 프리팹들에 연결되어 있고 한 개는 연결되어 있지 않는다.// |
| |
* 하나의 프리팹 인스턴스가 선택되어 있고 모든 인스턴스에게 영향을 미치는 변화를 주고자 한다면, 소스 프리팹(source Prefab)을 선택하기 위해 인스펙터에 있는 **Select** 버튼을 클릭합니다. | * 하나의 프리팹 인스턴스가 선택되어 있고 모든 인스턴스에게 영향을 미치는 변화를 주고자 한다면, 소스 프리팹(source Prefab)을 선택하기 위해 인스펙터에 있는 **Select** 버튼을 클릭한다. |
* 스크립트로 부터 프리팹들을 인스턴스화 하는 것에 대한 정보는 [[unity3d:Instantiating Prefabs]] 페이지에서 찾아 볼 수 있습니다. | * 스크립트로 부터 프리팹들을 인스턴스화 하는 것에 대한 정보는 [[unity:instantiatingprefabs|]] 페이지에서 찾아 볼 수 있다. |
| |
====상속==== | ====상속==== |
| |
상속(Inheritance)은 소스 프리팹(source Prefab)이 변할 때마다 이러한 변화가 모든 연결된 게임오브젝트들에게도 영항을 미친다는 것을 의미합니다. 예를 들어, 프리팹에 새로운 스크립트를 추가하면, 모든 연결된 게임오브젝트에게도 즉시 그 스크립트가 포함 되어질 것입니다. 그러나 모든 연결 관계를 온전히 유지하면서 하나의 인스턴스의 특성을 변화시킬 수 있습니다. 하나의 프리팹 인스턴스의 어떠한 특성을 변화시키면 그 변수의 이름이 굵은 글꼴로 표현되는 것을 보게될 것입니다. 그 변수는 이제 덮어 씌여(override) 진것입니다. 모든 덮어 씌여진(override) 특성은 소스 프리팹(source Prefab)에서의 변화에 영향받지 않을 것입니다. | [[unity:Inheritance|상속(Inheritance)]]은 소스 프리팹(source Prefab)이 변할 때마다 이러한 변화가 모든 연결된 게임오브젝트들에게도 영항을 미친다는 것을 의미한다. 예를 들어, 프리팹에 새로운 스크립트를 추가하면, 모든 연결된 게임오브젝트에게도 즉시 그 스크립트가 포함 되어질 것이다. 그러나 모든 연결 관계를 온전히 유지하면서 하나의 인스턴스의 특성을 변화시킬 수 있다. 하나의 프리팹 인스턴스의 어떠한 특성을 변화시키면 그 변수의 이름이 굵은 글꼴로 표현되는 것을 보게될 것이다. 그 변수는 이제 덮어 씌여(override) 진것이다. 모든 덮어 씌여진(override) 특성은 소스 프리팹(source Prefab)에서의 변화에 영향받지 않을 것이다. |
| |
이것은 프리팹 링크를 깨뜨리지 않으면서 그들의 소스 프리팹들로 부터 그들을 고유하게 만들기 위해 프리팹 인스턴스들을 변경시키는 것을 가능하게 합니다. | 이것은 프리팹 링크를 깨뜨리지 않으면서 그들의 소스 프리팹들로 부터 그들을 고유하게 만들기 위해 프리팹 인스턴스들을 변경시키는 것을 가능하게 한다. |
| |
{{:unity3d:OverrideOff.png}} | {{:unity3d:OverrideOff.png}} |
//여러개의 overrides(굵은 글씨체)가 이루어진 하나의 연결된 게임오브젝트// | //여러개의 overrides(굵은 글씨체)가 이루어진 하나의 연결된 게임오브젝트// |
| |
* 소스 프리팹(source Prefab)을 갱신하고 모든 인스턴스들을 새로운 overridden 값들로 갱신하려면, 인스펙터에 있는 **Apply** 버튼을 클릭합니다. | * 소스 프리팹(source Prefab)을 갱신하고 모든 인스턴스들을 새로운 overridden 값들로 갱신하려면, 인스펙터에 있는 **Apply** 버튼을 클릭한다. |
* 어떤 특정 인스턴스의 모든 overrides를 제거하기 위해서는 **Revert** 버튼을 클릭합니다. | * 어떤 특정 인스턴스의 모든 overrides를 제거하기 위해서는 **Revert** 버튼을 클릭한다. |
| |
====프리팹 연결의 파괴와 복구==== | ====프리팹 연결의 파괴와 복구==== |
| |
하나의 인스턴스와 그것의 소스 프리팹(source Prefab)사이의 연결을 끊는 특정한 방법들이 있지만 그 연결은 항상 다시 복구될 수 있습니다. 그 연결을 파괴하는 방법들에는 다음과 같은 것들이 있습니다: | 하나의 인스턴스와 그것의 소스 프리팹(source Prefab)사이의 연결을 끊는 특정한 방법들이 있지만 그 연결은 항상 다시 복구될 수 있다. 그 연결을 파괴하는 방법들에는 다음과 같은 것들이 있다: |
| |
* 컴포넌트의 추가 또는 제거 | * 컴포넌트의 추가 또는 제거 |
* 자식 게임오브젝트의 추가 또는 제거 | * 자식 게임오브젝트의 추가 또는 제거 |
| |
이러한 방법들은 연결을 파괴하는 것에 대한 주의/확인 메세지를 유발할 것입니다. 확인을 하면 연결은 파괴될 것이며소스 프리팹의 변화는 더이상 그 연결이 파괴된 인스턴스에 영향을 미치지 않을 것입니다. 그 연결을 복구하기 위해서는 그 인스턴스의 인스펙터에 있는 **Reconnect** 또는 **Apply** 버튼을 클릭하면 됩니다. | 이러한 방법들은 연결을 파괴하는 것에 대한 주의/확인 메세지를 유발할 것이다. 확인을 하면 연결은 파괴될 것이며소스 프리팹의 변화는 더이상 그 연결이 파괴된 인스턴스에 영향을 미치지 않을 것이다. 그 연결을 복구하기 위해서는 그 인스턴스의 인스펙터에 있는 **Reconnect** 또는 **Apply** 버튼을 클릭하면 된다. |
| |
* **Reconnect**는 소스 프리팹과 다른 점들을 모두 버릴 것입니다. | * **Reconnect**는 소스 프리팹과 다른 점들을 모두 버릴 것이다. |
* **Apply**는 소스 프리팹으로 모든 다른 것들을 복사할 것입니다. (그 후에 모든 다른 프리팹 인스턴스들로도) | * **Apply**는 소스 프리팹으로 모든 다른 것들을 복사할 것이다. (그 후에 모든 다른 프리팹 인스턴스들로도) |
| |
=====불러오기한 프리팹(Imported Prefabs)===== | =====불러오기한 프리팹(Imported Prefabs)===== |
| |
에셋(Assets) 폴더에 하나의 메쉬 에셋(mesh asset)을 놓을 때, Unity는 자동으로 그 파일을 불러오고 그 메쉬밖의 하나의 프리팹과 유사하게 보이는 것을 생성합니다. 이것은 실제 프리팹이 아니고 단순히 그 에셋 파일 그 자체입니다. 에셋의 인스턴스화 등의 작업은 보통의 프리팹들에서 작업 시 존재 하지 않았던 제약을 만듭니다. | 에셋(Assets) 폴더에 하나의 메쉬 에셋(mesh asset)을 놓을 때, Unity는 자동으로 그 파일을 불러오고 그 메쉬밖의 하나의 프리팹과 유사하게 보이는 것을 생성한다. 이것은 실제 프리팹이 아니고 단순히 그 에셋 파일 그 자체이다. 에셋의 인스턴스화 등의 작업은 보통의 프리팹들에서 작업 시 존재 하지 않았던 제약을 만듭니다. |
| |
{{:unity3d:PrefabsVsAssetIcons.png}} | {{:unity3d:PrefabsVsAssetIcons.png}} |
| |
//에셋 아이콘은 프리팹의 아이콘과 다른 것에 주목하세요// | //에셋 아이콘은 프리팹의 아이콘과 다른 것에 주목하라// |
| |
에셋은 보통 프리팹 대신 소스 에셋(source asset)에 연결된 게임오브젝트로서 씬에서 인스턴스화 됩니다. 구성요소(Components)들은 이런 게임오브젝트에서 정상적으로 추가되어 지고 제거되어 질 수 있습니다. 그러나 이것은 그 에셋 파일 자체에 데이터를 추가하는 것이기 때문에 그 에셋 자체에는 어떠한 변화도 적용할 수 없습니다. 재사용하고 싶은 어떤 것을 생성하고 싶다면 위 “Creating Prefabs"에 나타나있는 과정들을 실행 하면서 하나의 프리팹안에 에셋 인스턴스를 만들어야만 합니다. | 에셋은 보통 프리팹 대신 소스 에셋(source asset)에 연결된 게임오브젝트로서 씬에서 인스턴스화 된다. 구성요소(Components)들은 이런 게임오브젝트에서 정상적으로 추가되어 지고 제거되어 질 수 있다. 그러나 이것은 그 에셋 파일 자체에 데이터를 추가하는 것이기 때문에 그 에셋 자체에는 어떠한 변화도 적용할 수 없다. 재사용하고 싶은 어떤 것을 생성하고 싶다면 위 “Creating Prefabs"에 나타나있는 과정들을 실행 하면서 하나의 프리팹안에 에셋 인스턴스를 만들어야만 한다. |
| |
* 하나의 에셋의 인스턴스를 선택했다면, 그 인스펙터의 **Apply** 버튼은 **Edit** 버튼으로 대체되어 집니다. 이 버튼을 클릭하면 에셋을 위한 편집 어플리케이션을 시작할 수 있습니다. (Maya 또는 Max) | * 하나의 에셋의 인스턴스를 선택했다면, 그 인스펙터의 **Apply** 버튼은 **Edit** 버튼으로 대체되어 진다. 이 버튼을 클릭하면 에셋을 위한 편집 어플리케이션을 시작할 수 있다. (Maya 또는 Max) |
| |
| |
{{tag>유니티 unity 프리팹 prefab}} | |
| |
* 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.Prefabs|유니티코리아위키]] (CC BY-NC-SA 2.0) | * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.Prefabs|유니티코리아위키]] (CC BY-NC-SA 2.0) |
| |