프리팹 (Prefab)
여러 개의 똑같은 오브젝트를 생성하고 싶을 때 프리팹을 사용할 수 있다.
프리팹을 생성하면 완전히 똑같은 성질을 갖고 있는 오브젝트를 생성하는 것과 같은 일을 하는 것이다.
단순히 오브젝트를 하나 생성하는 것이 아닌, 프리팹에 적용된 스크립트, 컴포넌트, 자식 오브젝트 등 프리팹에 적용되어 있는 모든 것을 복제한다.
여러 마리의 몬스터, 농장의 동물, 밭의 식물 등 여러 개의 같은 오브젝트를 생성하고 싶을 때 사용할 수 있다.
프리팹 생성
그래서 프리팹을 어떻게 만드느냐?
우선 생성하고 싶은 프리팹의 이미지를 Project창에서 Hierarchy창으로 가져온다.
그리고 Hierarchy창에 생성된 오브젝트를 다시 Project창으로 가져온다.
그럼 Project창에 파란색 오브젝트가 하나 생길 것이다. 이것이 프리팹이다.
Hierarchy창에 있는 오브젝트도 파란색으로 바뀔 것인데 필요없으니 삭제해도 된다.
여기까지 했다면 프리팹을 사용할 준비가 끝났다.
Instantiate
프리팹을 복제하여 생성하기 위해서 Instantiate라는 함수를 사용할 것이다.
우선 GameObject 변수 2개를 선언해준다.
그리고 Instantiate 함수를 사용하여 하나의 오브젝트에 프리팹을 복제하여 넣어줄 것이다.
public GameObject Emptyprf;
public GameObject Empty;
// Start is called before the first frame update
void Start()
{
GameObject Empty = Instantiate(Emptyprf) as GameObject;
}
이 때 void Update 함수 안에서 Instantiate 함수를 호출하면 매 프레임마다 Instantiate 함수를 생성하게 되어서
하나만 생성하고 싶다면 Start 함수 안에서 호출해야한다.
그리고 Hierarchy창에서 빈 오브젝트를 하나 생성해준다.
이것은 스크립트를 실행하기 위한 용도로 사용된다.
만들었다면 생성한 빈 오브젝트에 스크립트를 적용시켜 주고 public으로 선언한 GameObject에 프리팹을 넣어준다.
이제 실행시켜보면 프리팹을 복제한 게임오브젝트가 화면에 보일 것이다.
완성
'유니티 > 유니티 엔진' 카테고리의 다른 글
[유니티] 코루틴 (Coroutine) (0) | 2023.11.13 |
---|---|
[유니티] FixedUpdate (0) | 2023.11.12 |
[유니티] 자연스러운 좌표이동 (Vector2.Lerp) (0) | 2023.11.08 |
[유니티] fillAmount (0) | 2023.10.22 |
[유니티] 캔버스 위의 UI좌표 (Camera.main.WorldToScreenPoint) (0) | 2023.10.22 |