Unity 프로젝트를 다른 사람과 공유하거나, 자주 쓰는 에셋을 백업할 때 .unitypackage 파일을 사용합니다.
하지만 무심코 import했다가 기존 파일이 의도치 않게 덮어써지는 사고가 발생할 수 있으니 주의가 필요합니다.
이 글에서는 export / import 방법과 함께, 덮어쓰기 이슈의 원인과 안전하게 사용하는 팁까지 정리합니다.
Unity 패키지 Export 방법
Unity에서 .unitypackage 파일을 만드는 방법은 간단합니다.
• 먼저 Assets 폴더 내에서 내보내고 싶은 폴더나 파일을 선택합니다.
• Assets 폴더 전체를 내보내고 싶다면, Project 편집 창 > Assets 폴더를 선택합니다.
• 프로젝트 창 빈공간에 마우스 우클릭 메뉴 > Export Package 를 선택합니다.
• 필요한 경우 "Include dependencies" 체크합니다. ( Default 로 선택되어 있음 )
• 원하는 이름을 적고 .unitypackage 파일로 저장합니다.
• 해당 이름의 .unitypackage 파일이 생겼습니다.
이렇게 생성된 패키지는 다른 Unity 프로젝트에서 import 하여 그대로 사용할 수 있습니다.
Unity 패키지 Import 방법
위에서 생성한 unitypackage 파일을 불러와 보겠습니다.
• 단순히 .unitypackage 파일을 project 창에 끌어다 놓으면 됩니다.
• 또 다른 방법으로 메뉴를 이용해서 불러와도 됩니다.
프로젝트 창에서 마우스 우클릭으로 메뉴를 열고 Import Package > Custom Package... 선택합니다.
• 윈도우 탐색기가 열리면 .unitypackage 파일을 선택합니다.
• import 창에서 포함할 파일을 선택한 뒤 Import 를 선택합니다.
이 과정을 통해 다른 프로젝트의 프리팹, 스크립트, 머티리얼 등을 쉽게 가져올 수 있습니다.
Export > Import
• export 된 Assets 폴더의 모든 파일들이 import 된 유니티 프로젝트에 그대로 불러와졌습니다.
예상치 못한 덮어쓰기 문제
그런데 Import 하려는 package 에 동일한 파일에 있다면, 내 파일을 덮어씌우는 문제가 발생합니다.
Unity는 Asset 을 이름이나 경로로 식별하지 않고, .meta 파일에 있는 GUID 로 식별합니다.
따라서, 경로가 다르더라도 GUID가 같다면 동일한 자산으로 간주되고 무조건 덮어씌워 버립니다.
그래서 덮어쓰기 문제를 해결하기 위해 내 assets 폴더를 잠시 다른 이름으로 변경시키는 방법으로는 해결되지 않습니다. ( 이 부분이 살짝 당황스러울 것입니다. )
따라서 .meta 파일을 삭제하면 GUID 가 새로 생성되기 때문에 충돌은 사라집니다.
하지만 이로 인해 예기치 못한 일들이 발생할 수 있으므로 추천하는 방법은 아닙니다.
그럼 어떻게 해야 하나?
완벽한 해결책은 없습니다. Unity가 GUID 기반으로 동작하기 때문입니다.
하지만 다음과 같은 방법으로 위험을 줄일 수는 있습니다
Import 전 꼼꼼한 확인
• Import 창에서 덮어씌워질 수 있는 항목은 체크 해제
• 이름이나 경로만 보지 말고 파일 용도를 잘 파악할 것
임시 프로젝트에서 먼저 Import
• 새 Unity 프로젝트를 만들어 임포트 테스트
• 거기서 검증한 뒤 필요한 항목만 복사
Export 전 폴더 정리
• export 할 에셋을 전용 폴더에 정리해두면 관리에는 도움이 됨
(단, 이렇게 해도 GUID 충돌은 방지할 수 없습니다.)
마무리
.unitypackage 는 강력하고 편리한 기능이지만, 무심코 import 하면 의도치 않은 덮어쓰기가 발생할 수 있습니다.
이유는 Unity가 파일명을 보지 않고 .meta의 GUID를 기준으로 자산을 판단하기 때문입니다.
따라서 import 할 때는 항상 어떤 파일이 들어오는지 직접 확인하고, 가능하다면 임시 프로젝트에서 미리 테스트해보는 습관이 안전합니다.
'Unity' 카테고리의 다른 글
Player Input 컴포넌트를 꼭 써야할까? (0) | 2025.07.13 |
---|---|
Unity 에서 Serializable 사용 예 (0) | 2025.07.03 |
오브젝트를 태그로 찾고자 할 때 : FindWithTag() (0) | 2025.07.02 |
유니티에서 yield break 와 코루틴에서 제거되는 시점 (0) | 2025.07.02 |
유니티에서 물체를 목적지까지 이동시키는 방법 (0) | 2025.07.01 |