Scene에 존재하는 오브젝트와 오브젝트의 컴퍼넌트들을 하나의 에셋(Assets)형태로 만드는 기능이다.
생성 방법
Hierarchy 창에서 프리팹으로 만들기를 원하는 오브젝트를 선택한 후, Assets 창으로 드래그 앤 드롭한다.
그러면, 다음과 같이 일반 에셋들과 구분되는, 파란색 정육면체가 생성된다. 이는 프리팹(Prefabs) 이라는 표시이다.
생성한 프리팹을 Scene으로 드래그 앤 드롭하면, 동일한 컴퍼넌트와 속성을 지닌 오브젝트가 여러개 생성된다. 이렇게 프리팹을 Scene에 배치하는 일련의 과정을 "프리팹의 인스턴스화" 라고 부른다.
오버라이딩
Scene에 배치한 프리팹을 오버라이딩 하는 것도 가능하다. 단순히 컴퍼넌트의 값을 바꿔주면 되는데, 오버라이딩을 수행한 프리팹은 다음과 같이 굵은 글자로 표시된다.
오버라이딩이 된 프리팹은, 부모 프리팹에서 값을 변경해도 오버라이딩한 값이 그대로 유지된다.
수정
프리팹을 더블 클릭하면, 프리팹을 수정할 수 있는 가상의 파란색 창이 열린다. 이 곳에서, 프리팹의 다양한 속성들을 수정할 수 있다.
스크립트를 이용한 인스턴스화
1. Scene 에 배치된 오브젝트를 이용하는 방법
첫 번째 방법은 Scene 에 빈 오브젝트를 배치한 뒤, 스크립트 파일을 연결하여 프리팹을 생성하는 것 이다.우선 아래와 같이 CubeSpawner 빈 오브젝트를 생성하고, CubeSpawner에 부착할 CubeSpawner.cs 스크립트 파일을 생성한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeSpawner : MonoBehaviour
{
public GameObject prefabs;
GameObject cube;
void Start()
{
cube = Instantiate(prefabs);
}
}
소스코드를 저장하고, CubeSpawner 빈 오브젝트에 스크립트 파일을 부착해 준다.
마지막으로, CubeSpawner 빈 오브젝트를 클릭한 뒤, 인스펙터 창의 Prefabs 항목에 생성하고자 하는 프리팹을 부착해준다.
실행해 보면 CubeSpawner에 의해서 Cube 프리팹 하나가 자동으로 생성된다.
2. Resources 폴더를 이용하는 방법
두 번째 방법은 Resources 폴더를 이용하는 방법이다. Resources 폴더란, 스크립트 파일 외의 것들을 저장하는 폴더인데 Resources 폴더를 생성해 주신 뒤 그 안에 Prefabs 폴더를 생성하고 , 프리팹 파일을 Prefabs 폴더 안에 넣는다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeSpawner : MonoBehaviour
{
public GameObject prefab;
GameObject Cube;
void Start()
{
prefab = Resources.Load<GameObject>("Prefabs/Cube");
Cube = Instantiate(prefab);
}
}
'게임엔진 > Unity' 카테고리의 다른 글
[Unity] DOTS란 무엇인가? Unity ECS 시스템 요약 (0) | 2022.10.26 |
---|---|
[Unity] Sprite (UI, SpriteRenderer) 색상 관련 (0) | 2022.09.18 |
[Unity] EventSystem을 이용해 아이템UI 드래그 및 다른 슬롯에 등록하기(IDragHandler, IDropHandler) (0) | 2022.08.16 |
[Unity] 게임 오브젝트 컴포넌트 패턴 (GameObject) C# 구현 (0) | 2022.08.15 |
[Unity] / [SerializeField] [HideInInspector] [Serializable] 어트리뷰트 인스펙터 공개/비공개 (0) | 2022.08.13 |