Unity에서 프리팹(Prefab)은 미리 구성된 게임 오브젝트의 템플릿입니다. 이를 사용하면 복잡한 구성 요소와 설정을 갖춘 게임 오브젝트를 쉽게 재사용할 수 있으며, 한 번의 설정으로 여러 인스턴스에서 공통적인 변경 사항을 적용할 수 있습니다. 프리팹은 게임 개발 과정을 효율화하고, 대규모 프로젝트에서 일관성을 유지하는 데 큰 도움이 됩니다.
만약 아래의 이미지와 같은 몬스터가 있고 게임 내에서 아래 몬스터를 여러개 복사하여 사용하고 있을 경우
해당 몬스터 모두에게 어떠한 변화가 생겨야 한다면 예를들어 아래 이미지처럼 외형이 변경이 되어야 한다면 일일히 모든 복사한 몬스터를 선택하여 외형을 변경해 주어야 합니다.
하지만 프리팹으로 만들어둔 파일을 활용할 경우. 원본 파일 즉 프리팹 파일이 변경이 된다면 프리팹 파일을 통해 생성된 오브젝트들은 모두 변경이 됩니다.
보기에도 효율적이고 관리도 편리하겠죠??
프리팹의 주요 기능과 이점
- 재사용성: 게임 개발 시 자주 사용되는 오브젝트를 프리팹으로 저장해두면, 이를 다양한 씬(scene)에서 재사용할 수 있습니다. 예를 들어, 나무, 자동차, 캐릭터 등을 프리팹으로 만들어 두면 필요할 때마다 손쉽게 배치할 수 있습니다.
- 일관성: 프리팹을 업데이트하면, 해당 프리팹을 기반으로 하는 모든 인스턴스가 자동으로 업데이트됩니다. 이는 게임 내에서 오브젝트의 일관된 행동과 외관을 유지하는 데 유용합니다.
- 효율성: 복잡한 구성을 갖는 오브젝트를 매번 새로 구성할 필요 없이, 프리팹으로 빠르게 복제하고 배치할 수 있습니다. 이는 개발 시간을 크게 절약해 줍니다.
- 쉬운 관리: 프리팹 시스템을 사용하면 게임 오브젝트의 버전 관리가 용이해집니다. 오브젝트의 변화를 추적하고, 필요한 경우 이전 버전으로 쉽게 롤백할 수 있습니다.
위 이점만으로도 프리팹을 활용해야할 이유로는 차고 넘칩니다. 물론 모든 오브젝트를 프리팹으로 만들 필욘없겠죠? 재사용을 해야하는 오브젝트의 경우 프리팹으로 만들어 활용하시면 됩니다.
테스트 삼아 큐브를 하나 생성해보도록 하겠습니다.
생성한 큐브를 프리팹 파일로 만들어 보도록 합시다. 생성한 큐브를 드래그 앤 드랍으로 프로젝트 파일의 에셋 폴더에 드랍을 해줍니다. 그럼 아래 이미지처럼 에셋 폴더에 파일이 생성이 되며 오브젝트가 이미지의 아이콘 처럼 파란색으로 변경이 됩니다. 파랗게 변경이 된 오브젝트는 프리팹 파일을 의미합니다.
이제 하이어라키에 있는 큐브 오브젝트는 카피본이 되며 원본은 에셋 폴더에 있는 파일이 됩니다. 기본적으로 하이어라키에 있는 오브젝트는 원본과 연결이 되어있는 상태입니다. 하이어라키에 있는 카피본은 어디까지나 카피본이기에 삭제해도 원본과는 상관이 없습니다.
하이어라키에 카피본을 추가하고 싶다면 원본 파일을 드래그 앤 드랍 하시면 됩니다.
더 많은 프리팹 오브젝트가 필요하다면 원본을 드래그 앤 드랍하셔도 되고 그냥 카피본을 ctrl + d 하셔서 복제하셔도 됩니다.
복제한 오브젝트들을 임의의 위치로 옮겨보도록 할께요.
큐브의 모델을 구 모델로 바꿔보도록 합시다.
원본 프리팹 파일을 선택 후 메쉬 부분의 큐브를 구 모델로 바꿔봅시다.
원본 프리팹 파일을 비롯 복사한 오브젝트들의 외형이 모두 바뀐 걸 확인할 수 있습니다. 만약 카피본만 외형을 바꾼다면 해당 오브젝트만 바뀌게 됩니다.
만약 카피본의 변경된 사항을 원본에 적용하고 싶다면 인스펙터창의 프리팹 메뉴에서 적용하시면 됩니다.
Revert All의 경우 원본 프리팹 파일의 상태로 돌리는 것이고 Apply All의 경우 카피본의 변경한 상태를 원본에 적용하겠다는 것입니다. Apply All 눌러서 원본 파일의 상태를 변경해보도록 할께요.
이미지에서 보듯 카피본 모델을 바꾼 후 apply all 했더니 원본 파일이 변경되며 모든 오브젝트의 외형이 변경된 것을 보실 수 가 있습니다. 더불어 해당 모델들의 사이즈를 변경해보도록 할께요.
원본 파일의 사이즈를 1에서 0.5로 줄였더니 카피본들도 줄어든 것을 확인하실 수 있습니다.
이상으로 프리팹의 기능과 사용 방법들을 보았는데 기본적으로 모든 것들이 한번에 다 바뀐다는 것만으로도 그 활용성이 크다는 것을 알 수가 있습니다. Unity에서 빼놓을 수 없는 아주 강력한 기능이기에 반드시 익숙하게 만드셔서 활용하시길 바랍니다.
'Unity 유니티' 카테고리의 다른 글
Unity 6 유니티 6의 전반적인 개선 사항!! (1) | 2024.04.09 |
---|---|
Unity 유니티 c# 웹 사이트 열기 Application.OpenURL (0) | 2024.04.02 |
Unity 유니티 비쥬얼 스튜디오 편집기 업데이트 (0) | 2023.10.13 |
유니티 코루틴?? Unity Coroutine?? hp회복 예 (0) | 2023.08.29 |
유니티 게임 오브젝트란? unity GameObject (0) | 2023.08.23 |
댓글