Unity

Unity) Prefab

Todah 2023. 10. 24. 22:14
반응형

 

Prefab 이란?

프리팹(Prefab)은 미리 만들어 놓은 게임 오브젝트, 템플릿이다. 

프리팹은 Asset에 저장되어 있으며, 프리팹 인스턴스(Prefab Instance)를 생성하여, 월드 상에서 동작한다. 

프리팹으로부터 원하는 만큼의 프리팹 인스턴스를 생성할 수 있다. 생성된 프리팹 인스턴스는 서로 독립적으로 동작하며, 프리팹 인스턴스의 프로퍼티를 수정해도, 다른 프리팹 인스턴스에는 영향을 주지 않는다. 

 

쉽게 말해서 프리팹은 특정 공산품을 대량으로 생산할 수 있는 설비를 갖춘 공장인셈이다.

 

 

 

- 환경 에셋

한 레벨에서 여러 번 사용되는 특정 유형의 나무를 예로 들 수 있다.

 

 

- 논플레이어 캐릭터(NPC)

게임의 여러 레벨에서 특정 유형의 로봇이 여러 번 나타나는 경우를 예로 들 수 있다. 이때 움직이는 속도와 내는 소리가 다를 수 있다(오버라이드 사용).

 

 

- 발사체

해적 대포가 발사할 때마다 포탄 프리팹을 인스턴스화하는 경우를 예로 들 수 있다.

 

 

- 플레이어의 메인 캐릭터

플레이어 프리팹을 게임 내 각 레벨(다른 씬)의 시작 지점에 배치할 수 있다.

 

 

 

-  Prefab Variant

 Prefab Variant 는 프리팹의 자식 개념이라 생각하면 쉽다.

 

아래 그림처럼 기존 프리팹과 같은 기능을 수행하지만 일부분만 다른 프리팹 생성을 위해서 프리팹을 복사한 후, 수정했다고 생각해보자.

왼쪽 프리팹은 노말 프리팹이고, 오른쪽 프리팹에는 일부 다른 기능이 추가되어있다.

여기서 A와 A0에 같은 기능을 추가하려고 할 때,

복사를 해서 생성한 경우에는 각각 기능을 추가해야하는 경우가 발생한다.

한 두개정도는 괜찮지만 만약 복사한 프리팹의 숫자가 매우 많은 경우 난감한 상황이 발생한다.

 

이런 상황에서 Prefab Variants 를 사용하면

기존의 부모 프리팹에만 수정을 해도 나머지 자식 프리팹도 모두 수정된다.

프리팹을 새로 만든후, 붉은 네모를 원본에 넣었을때 아래 예시처럼 작동한다.

왼쪽의 경우에는 각각 모두 붉은색 네모박스를 넣어서 수정해야하지만, Prefab Variant는 부모에만 붉은색 네모박스를 추가해주면 나머지 자식객체에는 자동으로 추가가되는 방식이다.

 

 

 

 

#참조

https://docs.unity3d.com/kr/2018.4/Manual/Prefabs.html

 

프리팹 - Unity 매뉴얼

Unity의 프리팹 시스템을 이용하면 게임 오브젝트를 생성, 설정 및 저장할 수 있으며, 해당 게임 오브젝트의 모든 컴포넌트, 프로퍼티 값, 자식 게임 오브젝트를 재사용 가능한 에셋으로 만들 수

docs.unity3d.com

https://notyu.tistory.com/35

 

유니티 프리팹(Prefab)과 프리팹 인스턴스(Prefab Instance)

1. Prefab 프리팹(Prefab)은 미리 만들어 놓은 게임 오브젝트, 템플릿이다. 프리팹은 Asset에 저장되어 있으며, 프리팹 인스턴스(Prefab Instance)를 생성하여, 월드 상에서 동작한다. 프리팹으로부터 원하

notyu.tistory.com

https://docs.unity3d.com/kr/2021.3/Manual/PrefabVariants.html

 

프리팹 배리언트 - Unity 매뉴얼

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

docs.unity3d.com

https://programing-note.tistory.com/entry/unity-Prefab-Variants

 

unity _Prefab Variants

2018버전부터 Prefab Variants 라는것을 지원한다. Prefab Variants 는 프리펩의 자식 계념이라 생각하면 쉽다. 아래 그림처럼 기존 프리팹을 바꿔서 Original 프리팹을 재생성 하게되었을때 두개로 나뉘어

programing-note.tistory.com

 

반응형

'Unity' 카테고리의 다른 글

Unity) ML Agent  (0) 2023.10.27
Unity) Design Pattern  (3) 2023.10.25
Unity) Serializable, SerializeField  (2) 2023.10.23
Unity) Event  (2) 2023.10.20
Unity) Animator  (2) 2023.10.20