유니티의 프리팹은 게임 오브젝트를 재사용할 수 있는 에셋으로 만들어줍니다.
단순히 복사하는 것과 다르게 프리팹을 이용해 씬에 만들어진 프리팹 오브젝트들은 동기화를 할 수 있습니다. 여기서 동기화란 동일한 프리팹으로부터 만들어진 객체는 프리팹을 수정하면 모든 객체가 동일하게 수정된 사항을 반영한다는 의미입니다.
유니티에서는 게임 실행 중 객체를 생성해야 하는 경우에 프리팹을 이용해 생성해야 합니다.
슬라임 프리팹 만들고 동기화 해보기
먼저 새로운 프로젝트를 만들어 보겠습니다.
새로운 프로젝트를 만드는 법을 모르신다면 아래의 링크를 따라 진행하시면 됩니다.
프로젝트 이름은 Slimes 입니다.
이제부터 단계 별로 Slime 프리팹을 만들고 동기화 시키는 실습을 진행하도록 하겠습니다.
▶ 씬에 빈 게임 오브젝트를 하나 만들어 줍니다.
▶ 다음과 같이 Slime 오브젝트의 하위에 2개의 큐브를 생성하고 이름은 변경해 줍니다.
- 유니티는 오브젝트간에 계층구조를 지원합니다.
- 상위에 있는 오브젝트를 부모 (Parent) 오브젝트 하위에 있는 오브젝트를 자식 (Child) 오브젝트라고 부릅니다. 여기서는 "Slime" 이 부모이고 "Head" 와 "Body" 가 자식 오브젝트입니다.
- 부모 오브젝트의 Transform을 변경하면 자식 오브젝트도 같이 영향을 받습니다.
▶ "Slime", "Head", "Body" 오브젝트의 Transform 을 다음과 같이 각각 설정해줍니다.
▶ Project 창에서 다음과 같이 폴더를 만들어 줍니다.
- Project 창에서 Assets 를 클릭합니다.
- 마우스 오른쪽 버튼을 클릭하면 그림과 같이 컨텍스트 메뉴가 나타납니다.
- 폴더가 만들어지면 이름을 "Resources" 로 변경해줍니다.
▶ 아래와 같이 "Slime" 오브젝트를 "Resources" 폴더로 드래그 하면 프리팹이 생성됩니다.
사실 프리팹은 Assets 폴더 하위 어느 곳에든 생성할 수 있습니다. Resources 폴더를 생성하고 만드는 이유는 맨 처음 언급한 게임이 실행 중일 때 동적으로 객체를 생성하려면 프리팹을 사용해야 한다는 것과 연관이 있습니다. 이를 위해 유니티에서 제공하는 Resources 라는 클래스를 이용하는 방법이 있는데 이 클래스의 기본 참조 위치가 "Resources" 폴더이기 때문입니다.
프리팹 오브젝트는 Hierarchy 창에서 푸른색으로 표시됩니다.
▶ Project 창에 있는 Smile 프리팹을 씬 창으로 드래그하여 슬라임 오브젝트를 만들어 줍니다.
▶ Hierarchy 창에 있는 프리팹 오브젝트의 오른쪽 화살표를 클릭해 프리팹 편집 화면으로 들어갑니다.
▶ 아래와 같이 Cube를 추가하고 이름을 Weapon 으로 변경한 후 Transform 속성을 다음과 같이 설정해 줍니다.
- Position: (1.2, 1, 1.2)
- Rotation: (-45, 0, 0)
- Scale: (0.5, 0.5, 1.5)
씬 안에 있는 모든 Slime 프리팹 오브젝트가 동기화되어 동일한 위치에 Weapon 이 생성되었습니다.
'게임 프로그래밍 > 유니티(2021.3 LTS) 강좌' 카테고리의 다른 글
[유니티 기초] 코루틴 (Coroutine) (0) | 2022.10.26 |
---|---|
[유니티 기초] 게임 실행 중 프리팹 오브젝트 생성 (0) | 2022.10.25 |
[유니티 기초] 에셋 스토어 (Asset Store) 사용 (0) | 2022.10.24 |
[유니티 기초] 충돌 처리 (Rigidbody, Colliders) (0) | 2022.10.21 |
[유니티 기초] 키보드, 마우스 입력 처리 (0) | 2022.10.20 |
댓글