안녕하세요. 이번 포스팅에서는 Unity의 prefabs를 만들어보려고 합니다.
Prefabs란?
Prefabs는 GameObject를 생성 및 설정을 저장할 수 있기 때문에 재활용 가능한 GameObject를 생성할 때 사용하는 기술입니다. Prefabs에서 생성된 GameObject는 Prefabs에 저장되어 있는 정보들을 동일하게 들고 있고 개별적으로 값을 변경할 수도 있습니다. 그리고 런타임에서 GameObject를 생성하고 싶을 때도 Prefabs를 사용합니다.
자세한 예시를 알아볼까요?
- 산속 배경일 때 반복적으로 심는 '나무'들
- 총 게임에서 총을 쏠 때마다 생성되는 '총알'을 만들 때
- 주변에서 랜덤으로 생성되는 '몬스터'
Player Prefabs 생성하기
Prefabs 생성 방법은 Scean에 존재하는 GameObject를 Project로 옮겨주면 생성됩니다. (아주 쉽죠?)
그런데 아직 Scean는 Player와 관련된 GameObject가 없어요. 그래서 우리는 지난 시간에 만들었던 Player Sprite으로 GameObject로 만들어야 합니다. GameObject를 만드는 방법도 Hierarchy 창으로 드래그해 주면 됩니다 :)
Player Prefabs 설정 저장하기
hierarchy에 존재하는 player_0 GameObject를 통해 값을 변경해도 Project에 있는 Prefabs에 반영 안 되는 것을 확인할 수 있습니다. 이는 GameObject의 값 설정은 오버라이드로 간주되는 Prefabs의 특성 때문입니다.
따라서 Prefabs의 공통 설정을 하려면 Prefabs Editor를 사용해야 합니다.
Project 창에서 Prefabs를 더블 클릭하면 Prafabs Editor가 열리게 되는데요. Scean 창에서 Prefabs가 강조되어 Sceans에서 Prefabs를 한눈에 파악하기 쉽게 해 주고 오른쪽에 inspector에서 값을 수정하면 Prefabs에 반영되게 됩니다.
우선 이름은 Player로 변경해 주고 Tag를 Player로 설정했습니다. GameObject의 Tag 설정은 중요합니다. Script에서 GameObject를 찾거나 구분하는 기준이 되기 때문인데요. 예를 들어 어떤 GameObject와 충돌 이벤트를 구현해야 할 때 캐릭터가 나무와 부딪힌 건지 몬스터와 부딪힌 건지 알아야 하겠죠. 그때 Tag를 통해 구별할 수 있습니다.
void OnTriggerEnter (Collider other) {
if (other.gameObject.tag == EnemyTag){
other.gameObject.tag = Tag;
}
}
자 이것으로 Prefabs에 대한 아주 기본적인 설정을 마쳤습니다. 아직 Prefabs을 만들지 않은 Slime을 Prefabs으로 만들어보면서 복습해도 좋을 것 같습니다!
'Unity' 카테고리의 다른 글
[Unity] 2D Top Down RPG 게임 만들기 - Player Move (1) | 2023.10.20 |
---|---|
[Unity] 2D Top Down RPG 게임 만들기 - TileMap (0) | 2023.10.16 |
[Unity] 2D Top Down RPG 게임 만들기 - Camera 설정하기 (0) | 2023.10.15 |
[Unity] 2D Top Down RPG 게임 만들기 - Asset 추가 및 설정 (0) | 2023.10.13 |
[Unity] 2D Top Down RPG 게임 만들기 - Unity 설치 (0) | 2023.10.11 |