일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 오픽 im1 5일
- unity
- 크래프톤
- 유니티 독학
- 크래프톤 게임 정글 랩
- 유니티 스토리
- 유니티 체스
- unity 강의
- unity 공부
- unity 설치
- 게임 개발
- 유니티 미연시
- 유니티 대화
- 크래프톤 정글랩
- protobuf 란?
- protobuf란
- 게임 독학
- Unity Chess
- 게임 개발 독학
- 크래프톤 정글 게임 랩
- 유니티 퀘스트
- unity 개발
- 크래프톤 정글 게임랩
- unity 게임 개발
- 오픽 im1
- ETRI 연구연수
- node.js
- Unity 독학
- unity 게임
- 유니티
- Today
- Total
하참이의 아이디어노트
Unity 강의 1일차 (8) - 프리팹 본문
본 강의는 다음 문서를 참고하여 제작하였습니다. 자세한 내용은 하단 문서를 참고하시거나 댓글로 질문 주시면 성심성의껏 답변해드리겠습니다.
프리팹을 사용하여 게임 오브젝트 관리 - Unity Learn
이 튜토리얼에서는 프리팹을 사용하여 씬에서 많은 게임 오브젝트를 디자인하고 만들어서 체계적으로 관리해 보겠습니다. 이 튜토리얼에서 배울 내용은 다음과 같습니다. 씬에서 프리팹을 사
learn.unity.com
게임을 제작하다보면 반복되는 게임 오브젝트를 생성해야 할 일이 많을 것 입니다. 예를 들어볼까요? 우리는 RPG 게임에 몬스터를 만드는 작업을 해야한다고 해봅시다.
우선 똑같이 생긴 몬스터를 만들어야 하는데 같은 작업을 반복할 수는 없으니 하나의 틀을 만들고 복사 붙여넣기 하면 좋을 것 같습니다.
또 필요할 때마다 리젠도 해줘야 하고, 너무 많으면 생성을 멈춰야 합니다. (이를 동적 생성이라고 합니다.)
그리고 이미지를 변경하거나 밸런스 패치를 하게 되면 모든 몬스터가 똑같은 변경을 받아야 하죠.
프로그래밍 공부를 하신 분들이라면 어느정도 감이 잡히시는 분들도 계실 것 입니다. 헉! 그런데 이런 틀을 만들고 동적 생성 할 수 있도록 하는 기능을 Unity 에서는 제공을 해준다구요??
넵 그 기능이 바로 프리팹 (Prefab) 입니다.
프리팹은 게임 오브젝트의 템플릿 역할을 하는 에셋입니다. 프리팹으로부터 인스턴스라고 부르는 여러 복사본을 생성할 수 있습니다. 프리팹 에셋을 변경하면 해당 인스턴스도 모두 변경됩니다.
이론으로 외우려니 어려울 수 있습니다. 앞서 해왔던 것 처럼 바로 실습을 해보도록 하겠습니다.
우선 프리팹은 하나의 틀 이라고 했죠. 틀을 잘 만들어두어야 이후에 나오는 복사본들이 굉장히 잘 나올 것 입니다. 우선 틀이 될 하나의 게임 오브젝트를 잘 만들어봅시다.
이전에 만들었던 Sphere의 이름을 BouncyBall로 변경합니다.
프리팹을 보관 할 폴더를 생성해봅시다. 프로젝트 창 Assets에서 우클릭 -> Create -> Folder로 폴더를 생성하고 이름을 Prefabs로 변경합니다.
Prefabs 폴더에 변경한 BouncyBall을 드래그 합시다.
어? 하이어라키 창의 BouncyBall 게임 오브젝트의 이름 색이 파래졌습니다. 이 것은 저희가 만든 BouncyBall이 프리팹이 됐다는 뜻 입니다.
드래그 하나로 프리팹을 만든 것 입니다. 역시 Unity, 굉장히 편리하네요.
그럼 저희 이제 프리팹을 생성했으니 아까 얘기했듯이 이 오브젝트를 찍어내듯이 잔뜩 생성해봅시다. 생성한 프리팹을 다시 씬으로 드래그 해서 BouncyBall을 한 6~7개 정도 생성해봅시다.
파란색 공이 엄청 생성되었네요! 그런데 이거... 복사 붙여넣기 한거랑 다를게 없지 않나요? Ctrl + D는 이미 배웠는데요! 또 그렇게 대단한 기술 같아보이지도 않구요.
좋은 반응입니다! 기대감이 적을수록 해당 기능에 대한 감탄은 커질 것 이니까요. 프리팹의 진가는 이제부터입니다.
프리팹을 하나 수정해봅시다. 하이어라키 창에서 공 하나를 선택한 뒤 Alt를 누른 상태에서 우측의 화살표를 눌러봅시다.
뭔가 공 하나만을 위한 공간에 온 것 같습니다! 저는 애니메이션을 좋아하기 때문에 이런 연출을 굉장히 좋아합니다 ㅎㅎ
이 프리팹을 수정해볼까요? 지금까지 배웠던 기능들로는 머터리얼을 변경해볼 수 있겠네요.
Materials 폴더에 가서 새 머터리얼 2개를 생성한 뒤, 하나는 빨간색, 하나는 파란색을 만들어봅시다. 방법을 까먹으셨다면 이전 글을 참고해주세요!
여기까지 오셨다면 굉장히 잘 따라오고 계신 것 입니다! 이제 하이어라키 창을 보면 BouncyBall 하나만 존재할 것 입니다. 그 공의 머터리얼을 빨간색으로 변경해줍시다. Collider에 입히는 것이 아닌, 씬 뷰에 있는 공 자체에 드래그 하면 되겠습니다.
이제 화면으로 돌아가봅시다. BouncyBall 좌측 상단에 존재하는 화살표를 클릭하면 돌아갈 수 있습니다.
헉! 하나만 바꾸었을 뿐인데 모든 공의 색이 바뀌었네요!
만약에 기존의 복사 붙여넣기 하는 방식이었으면 일일이 하나하나 수정했어야 했을 것 입니다.
아뇨! 빨간색으로 변경 한 것을 복사 붙여넣기 하면 되죠! 하실 수 있습니다.
만일 그렇게 할 경우 위치정보와 같이 기존에 수정했었던 정보들을 기억해두지 않으면 굉장히 혼란해지기에 더 복잡한 작업일 수 있습니다. 또다시 새로운 변경점이 생기면 다시 다 지우고 붙여넣기 하고 기존의 정보를 덮어씌우는... 생각만 해도 복잡합니다.
프리팹의 사용법을 조금 더 설명하겠습니다. 실수로 프리팹이 아닌 하나의 개체만 변경하는 행위를 했을 수 있습니다. 예를 들면 모든 공이 튕기지 않게 하고 싶어서 물리 머터리얼을 지웠는데 실수로 프리팹이 아닌 공 하나의 물리 머터리얼만 수정 해버린 것 입니다.
아아악! 하나만 수정한건데 처음부터 다시 하면 되지 않을까요? 긍정적입니다. 하지만 더욱 간편한 기능이 있는데 게임 개발자라면 이것을 놓칠 수 없죠.
우선 아까 말했듯이 공 하나의 물리 머터리얼만을 변경해봅시다. BouncyBall 중 하나를 골라 Collider의 머터리얼을 제거해봅시다.
이렇게 변경하게 되면 하이어라키창, 그리고 변경된 컴포넌트의 속성 (여기서는 Collider의 Material이 None으로 변경된 것 이겠니요)에 파란색 강조줄이 뜨게 됩니다.
뭐.. 특색있는 물체 하나를 원한다면 상관 없습니다. 하지만 프리팹의 지향방향에는 어긋날 수 있겠죠.
자 이제 변경사항을 모든 프리팹에 적용해봅시다.
우측 상단에 Overrides라고 적혀있는 것을 볼 수 있을 것 입니다.
해당 드롭박스를 클릭하면 변경사항 목록이 나오고, 적용할 것인지 되돌릴 것인지를 선택 할 수 있습니다.
만일 변경사항이 마음에 안들면 Revert All을 눌러 원래 프리팹과 동일하게 바꿀 수 있고, 마음에 든다면 Apply All을 눌러 모든 프리팹에 변경 사항을 적용 할 수 있습니다. Apply All을 클릭해봅시다.
이제 게임을 실행해보면 모든 공들이 철공처럼 바닥에 착! 하고 달라 붙을 것 입니다.
벌써 프리팹이라는 대량 생산 고급 기술까지 배웠습니다! 이제 몬스터 모델 에셋만 있다면 몬스터도 대량 생산이 가능하겠네요!
아직 공을 떨어뜨리는 기초 단계만 하는 것 처럼 보이지만 굉장히 중요한 기술을 배운 것 입니다. 이번 단계를 잘 배워두셔야 다음 단계도, 그리고 고급 게임 제작 응용까지 나아갈 수 있을 것 입니다.
읽어주셔서 감사합니다!
'Unity > Unity 기초' 카테고리의 다른 글
Unity 강의 1일차 (10) - 에셋 다운로드 (0) | 2025.01.16 |
---|---|
Unity 강의 1일차 (9) - 프리팹 응용 (0) | 2025.01.15 |
Unity 강의 1일차 (7) - 머티리얼 (2) | 2025.01.15 |
Unity 강의 1일차 (6) - 컴포넌트 (4) | 2025.01.15 |
Unity 강의 1일차 (5) - 프리미티브 구조 만들기 (0) | 2025.01.15 |