본문 바로가기
게임 프로그래밍/유니티(2021.3 LTS) 강좌

[유니티 기초] 프리팹 (Prefab) - 동기화

by 레오란다 2022. 10. 25.
반응형

유니티의 프리팹은 게임 오브젝트를 재사용할 수 있는 에셋으로 만들어줍니다.

단순히 복사하는 것과 다르게 프리팹을 이용해 씬에 만들어진 프리팹 오브젝트들은 동기화를 할 수 있습니다. 여기서 동기화란 동일한 프리팹으로부터 만들어진 객체는 프리팹을 수정하면 모든 객체가 동일하게 수정된 사항을 반영한다는 의미입니다. 

 

유니티에서는 게임 실행 중 객체를 생성해야 하는 경우에 프리팹을 이용해 생성해야 합니다.

 

슬라임 프리팹 만들고 동기화 해보기

먼저 새로운 프로젝트를 만들어 보겠습니다.

 

새로운 프로젝트를 만드는 법을 모르신다면 아래의 링크를 따라 진행하시면 됩니다. 

https://ugames.tistory.com/4

 

[유니티] 새 프로젝트 생성과 기본 UI

유니티는 아래의 이미지와 같이 유니티 Hub를 통해 새로운 프로젝트를 생성할 수 있습니다. 1. 새 프로젝트 생성 새 프로젝트는 유니티 Hub를 실행시키면 표시되는 화면에서 왼쪽 영역의 프로젝트

ugames.tistory.com

 

프로젝트 이름은 Slimes 입니다.

이제부터 단계 별로 Slime 프리팹을 만들고 동기화 시키는 실습을 진행하도록 하겠습니다.

 

 

 씬에 빈 게임 오브젝트를 하나 만들어 줍니다.

 

빈 오브젝트 생성 후 이름을 Slime으로 변경

 

 다음과 같이 Slime 오브젝트의 하위에 2개의 큐브를 생성하고 이름은 변경해 줍니다.

 

슬라임 자식 노드 생성

  • 유니티는 오브젝트간에 계층구조를 지원합니다.
  • 상위에 있는 오브젝트를 부모 (Parent) 오브젝트 하위에 있는 오브젝트를 자식 (Child) 오브젝트라고 부릅니다. 여기서는 "Slime" 이 부모이고 "Head" 와 "Body" 가 자식 오브젝트입니다.
  • 부모 오브젝트의 Transform을 변경하면 자식 오브젝트도 같이 영향을 받습니다.

 

 "Slime", "Head", "Body" 오브젝트의 Transform 을 다음과 같이 각각 설정해줍니다.

 

각 오브젝트 속성

 Project 창에서 다음과 같이 폴더를 만들어 줍니다. 

  • Project 창에서 Assets 를 클릭합니다.
  • 마우스 오른쪽 버튼을 클릭하면 그림과 같이 컨텍스트 메뉴가 나타납니다.
  • 폴더가 만들어지면 이름을 "Resources" 로 변경해줍니다.

 

Project 에 폴더 만들기

아래와 같이 "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 이 생성되었습니다.

반응형

댓글