[Unity] 에셋을 옮긴 뒤 참조가 끊겼을 때: .meta 파일과 GUID

 

ChatGPT 생성 이미지

이전에 작성됐던 글은 [Project] 창에서만 파일을 옮기라고 했어요.

오늘은 그 이유를 일부러 문제를 만들어서 확인해요. 실습은 반드시 프로젝트를 백업한 뒤, 연습용 머티리얼 하나로만 해요.


Unity는 이름이 아니라 번호로 찾아요

meta 파일

Unity는 Assets 안의 파일마다 같은 이름의 `.meta` 파일을 만들어요.

`M_Item.mat` 옆에는 `M_Item.mat.meta`가 있어요. Unity 에디터에서는 보이지 않고 파일 탐색기에서만 보여요(숨긴 항목 표시가 필요할 수 있어요).


GUID

.meta 파일 안에는 그 에셋의 고유 번호인 GUID가 들어 있어요.

프리팹이나 씬은 머티리얼을 이름이 아니라 이 번호로 기억해요. 주민등록번호로 사람을 찾는 것과 비슷해요. 이름이나 폴더가 바뀌어도 번호가 같으면 연결이 유지돼요.


탐색기에서 옮길 때 생기는 일

파일만 옮기고 .meta를 남겨 두면, Unity는 새 위치의 파일을 처음 보는 파일로 여기고 새 GUID를 만들 수 있어요. 그러면 원래 번호를 기억하던 프리팹·씬은 대상을 찾지 못해요.


버전 관리와 .meta

Git 같은 버전 관리를 쓸 때 .meta를 빼고 올리면 다른 컴퓨터에서 참조가 깨져요. .meta는 항상 파일과 함께 커밋해요.


참조 끊기고 복구하기

  1. Unity를 닫고 프로젝트 폴더 전체를 복사해 백업해 두어요.
  2. 프로젝트를 다시 열고 `Materials`에 연습용 `M_Test`를 만들어 바닥 Plane에 적용한 뒤 씬을 저장해요.
  3. Unity를 닫아요.
  4.  파일 탐색기에서 `M_Test.mat`**만** `Assets/Prefabs`로 옮겨요. `M_Test.mat.meta`는 `Materials`에 그대로 둡니다.
  5. Unity를 열고 전시장 씬의 바닥을 확인해요. 재질이 없는 상태(분홍색 또는 Missing)가 되는지, Console에 어떤 메시지가 나오는지 기록해요.
  6. 복구: Unity를 닫고 백업에서 원래 `M_Test.mat`과 `.meta`를 함께 원래 위치로 되돌리고, 잘못 옮긴 파일과 새로 생긴 .meta는 지워요.
  7. Unity를 열어 바닥 재질이 돌아왔는지 확인해요.
  8. 이번에는 [Project] 창에서 `M_Test`를 `Prefabs`로 끌어 옮겨 보고, 재질이 유지되는지 비교한 뒤 다시 `Materials`로 돌려놓아요.

탐색기에서 파일만 옮기면 참조가 끊길 수 있고, 에디터에서 옮기면 유지돼요. 실제로 어떤 메시지가 나왔는지는 실습 후 그대로 적을게요.


  • meta 파일을 지워도 Unity가 다시 만들어 주나요?
    • 만들어 주지만 새 번호로 만들 수 있어요. 그러면 기존에 그 에셋을 쓰던 곳의 연결이 끊겨요.
    • 파일은 그대로인데 연결만 사라지니 원인을 찾기 어려워요. 그래서 .meta는 지우지도, 따로 옮기지도 않는 것이 원칙이에요.
    • 실수했다면 백업이나 버전 관리에서 원래 .meta를 되돌리는 것이 가장 확실해요.
  • Library 폴더도 버전 관리에 올려야 하나요?
    • 보통은 올리지 않아요. Library는 Unity가 다시 만들 수 있는 캐시예요.
    • 반대로 Assets, Packages, ProjectSettings와 .meta는 올려요.
    • Unity용 .gitignore 템플릿을 쓰면 이 구분을 쉽게 적용할 수 있어요.
    • 버전 관리를 본격적으로 쓰는 주차에서 다시 확인해요. 지금은 ‘.meta는 반드시 함께’만 기억하세요.
  • 참조가 끊긴 걸 어떻게 빨리 찾나요?
    • Inspector에서 Missing으로 표시되는 칸이나 Console 경고를 먼저 봐요.
    • 분홍색 오브젝트는 재질 문제의 신호일 수 있어요.
    • 원인이 셰이더인지 참조인지는 머티리얼 칸이 비었는지로 구분해요.
    • 오늘 실습에서 본 화면이 나중에 같은 문제를 알아보는 기준이 돼요.
    • 실제 화면은 캡처해서 이 글에 붙일게요.
Unity는 .meta 안의 GUID로 에셋을 찾아요. 파일과 .meta는 항상 함께, 옮길 때는 에디터에서
내일은 전시장을 완성하고 저장 후 다시 열어 봐요.

이 블로그의 인기 게시물

[Notion] 노션에서 페이지 간 링크 연결하는 방법 총정리

[Notion] 노션 문서 PDF로 저장하는 방법

[Notion] 노션 기본 템플릿 5가지 소개와 활용 팁