[Unity] guid

스윗포테이토·2022년 12월 16일
1

GUID?

Globally Unique IDentifier의 약자로, 유니티에서 asset을 구분하기 위해 쓰인다. Global UID 이기 때문에 한 프로젝트 내에서만 아니라 서로 다른 프로젝트 간에서도 유일하다.

Asset 폴더를 열어서 숨김 파일 보기를 해보면, 이런식으로 내부의 모든 파일과 폴더마다 .meta 파일이 만들어진 것을 볼 수 있다.

참고로 맥에서 숨김파일 보기 단축키는 cmd + shift + .이다.

GUID는 이 메타파일에 위치하는데, 텍스트 에디터나 IDE에서 파일을 열어보면 확인할 수 있다.


2번째 줄에 있는 것이 guid인데, 16비트 32자리 수이다.
유니티는 이 메타파일에 있는 guid로 에셋을 구분한다. 즉, 이 guid가 다르면 원본 파일이 똑같더라도 별개의 에셋으로 취급한다는 뜻이다.

메타 파일은 유니티 에디터에 의해 원본 파일과 동일한 경로에 .meta 확장자가 붙어 자동으로 생성된다. 이후 유니티 에디터에서 경로를 수정할 경우 수정사항이 반영된다. 그러나 외부에서 경로를 수정할 경우에는 메타파일이 함께 수정되지 않아서 에셋을 찾기 어려워진다.

예를 들어, Assets 폴더 내에 A.png를 탐색기를 통해 위치시킨 경우, 유니티 에디터는 변경사항을 감지하여 Assets/A.png.meta를 만들고, guid를 부여한다. 만약 유니티 에디터에서 A.pngA-1.png로 수정한다면, 에디터는 자동으로 A.png의 메타파일이었던 A.png.meta도 함께 A-1.png.meta로 바꿔주어 에셋을 계속 참조한다. (guid의 변경은 일어나지 않는다.) 이는 파일/폴더 위치를 바꾸는 경우도 마찬가지이다.

그러나 외부 파일 탐색기 등에서 경로 변경이 일어난다면 메타파일의 경로 변경은 일어나지 않는다. 이후 에디터가 변경사항을 감지하면 A.png가 삭제되었고, A-1.png가 새로 만들어졌다고 판단할 것이다. 따라서 A-1.png.meta 파일을 새로 만들고 새로운 guid를 부여할 것이다. 따라서 기존 A.png의 guid로는 에셋을 찾을 수 없게 된다.

결론

에셋을 import하거나 경로를 바꾸고 싶다면 가능한 유니티 에디터를 사용하는 것이 좋다. 불가피한 경우, 메타파일의 경로(및 파일명)도 함께 수정해주어야 한다.


reference

What is Unity GUID — How to Get & Change GUID?

profile
나의 삽질이 미래의 누군가를 구할 수 있다면...

1개의 댓글

comment-user-thumbnail
2023년 7월 3일

정보 감사합니다!

답글 달기