Unity는 에셋을 임포트할 때 에셋을 임포트하는 데 사용할 임포트 설정, 프로젝트 전반에서 에셋이 사용되는 위치와 같은 에셋에 대한 추가 데이터도 저장하고 관리합니다. 아래에는 이 프로세스가 진행되는 방법이 설명되어 있습니다.
.meta
파일을 생성합니다.모든 에셋에 대한 임포트 설정은 Unity가 에셋을 처리하는 방법에 영향을 줍니다. 에셋 파일 또는 에셋의 임포트 설정을 수정하면 Unity가 에셋을 다시 임포트합니다. 자세한 내용은 에셋과 에셋 임포트 설정을 참조하십시오.
Assets
폴더에 텍스처 같은 에셋을 배치하면 Unity가 먼저 새 파일이 추가되었음을 인식합니다. 이는 에디터가 Assets
폴더의 콘텐츠를 기존에 알려진 에셋의 리스트와 대조하여 자주 확인하기 때문입니다.
Unity가 새 파일을 찾으면 에셋에 고유 ID를 할당합니다. Unity가 에셋을 참조하기 위해 내부적으로 사용하는 ID이며, 이를 통해 Unity는 아무런 손상 없이 에셋을 이동하거나 이름을 바꿀 수 있습니다.
ID는 일반적으로 에디터에 표시되지 않습니다.
아래 이미지는 Unity가 프로젝트의 에셋 폴더에 있는 각 아이템마다 생성하는 .meta 파일을 보여줍니다. Unity는 에셋 파일과 폴더마다 메타 파일을 생성합니다.
메타 파일은 Unity 프로젝트 창에 숨겨져 있으며 기본적으로 파일 시스템에 숨겨진 상태일 수도 있으므로 컴퓨터에서 숨김 파일을 표시하지 않는 한 Windows 탐색기나 Finder에서 볼 수 없습니다.
이 예제는 시스템 파일 브라우저에 표시되는 것처럼 Unity가 프로젝트의 Assets
폴더 내에 각 에셋 또는 폴더에 대한 .meta
파일을 생성하는 것을 보여줍니다. 하지만 이러한 .meta
파일은 기본적으로 숨김 상태이므로 프로젝트 창에 표시되지 않습니다. Mode 프로젝트 설정에서 Visible Meta Files를 선택하여 숨김 상태를 해제할 수 있습니다.
Unity는 에셋에 대한 .meta
파일을 생성할 때 .meta
파일 내에 에셋의 ID를 작성하고 에셋 파일과 동일한 위치에 .meta
파일을 저장합니다.
.meta
파일은 에셋에 할당된 고유 ID뿐 아니라 프로젝트 창에서 에셋을 선택할 때 인스펙터 창에서 보이는 모든 임포트 설정 값을 포함하고 있습니다. 예를 들어, 텍스처의 메타 파일은 텍스처 타입, 랩 모드, 필터 모드, 이방성 레벨 임포트 설정을 포함합니다.
에셋에 대한 임포트 설정을 변경하면 새로운 설정이 에셋에 수반되는 .meta
파일에 저장됩니다. Unity는 업데이트된 설정에 따라 에셋을 다시 임포트한 후 그에 따라 프로젝트의 Library
폴더에 있는 임포트된 “게임용” 데이터를 업데이트합니다.
중요: 메타 파일에는 프로젝트에서 에셋이 사용되는 방법에 대한 중요한 정보가 포함되어 있으며 관련 에셋 파일과 함께 있어야 합니다. Unity 자체의 프로젝트 창 안에서 에셋을 이동하거나 이름을 바꾸면 Unity는 해당 .meta 파일도 자동으로 이동하거나 이름을 바꿉니다. Unity 외부(예: Windows 탐색기 또는 macOS의 Finder)에서 에셋을 이동하거나 이름을 바꾸면 .meta 파일도 반드시 동일하게 이동하거나 이름을 바꿔야 합니다.
에셋의 메타 파일을 잃는 경우(예를 들어, Unity 외부에서 에셋을 이동하거나 이름을 바꿨지만 해당 .meta 파일은 그대로 있거나 이름을 바뀌지 않은 경우) 프로젝트에서 해당 에셋에 대한 레퍼런스를 해제합니다. 이 상황에서 Unity는 에셋에 해당 메타 파일이 없음을 확인하고 이동되거나 이름을 바꾼 에셋에 대해 마치 새 에셋인 것처럼 새 메타 파일을 생성하고 “고아가 된” 이전 .meta 파일을 삭제합니다.
이럴 경우 발생할 수 있는 문제 타입에 대한 예로 텍스처 에셋의 .meta 파일을 잃는 경우 해당 텍스처를 사용했던 머티리얼은 이제 이 텍스처를 참조하지 않습니다. 이 문제를 수정하려면 해당 텍스처를 요구했던 머티리얼에 수동으로 다시 할당해야 합니다.
스크립트 에셋의 .meta 파일을 잃는 경우 해당 스크립트가 할당되었던 게임 오브젝트나 프리팹은 “할당되지 않은 스크립트” 컴포넌트와 연결되어 기능을 상실합니다. 이 문제를 수정하려면 스크립트를 해당 오브젝트에 수동으로 다시 할당해야 합니다.
Unity에서 프로젝트의 Assets 폴더 내에 있는 폴더에는 자체 .meta
파일이 할당되지만, 일부 버전 관리 시스템(VCS)은 빈 폴더를 저장할 수 없습니다. 즉 프로젝트에서 빈 폴더를 추가하거나 삭제할 때 VCS는 .meta
파일을 추가 또는 제거된 것으로 저장하지만, 폴더 자체를 추가하거나 제거하는 변경 사항은 저장하지 않으므로 혼란을 일으키거나 문제가 될 수 있습니다.
이 문제를 해결하기 위해 Unity는 빈 폴더에 대해 다음과 같은 방식을 사용합니다.
Unity가 이전에는 메타 파일이 있었지만 지금은 해당 메타 파일이 없는 빈 폴더를 감지하면, VCS의 다른 사용자가 폴더를 삭제하여 메타 파일이 제거되었다고 가정하고 빈 폴더를 로컬에서 삭제합니다.
Unity가 폴더에 대한 새 메타 파일을 감지했지만 해당 폴더가 로컬에 존재하지 않는 경우 Unity는 VCS의 다른 사용자가 폴더를 추가하여 새 메타 파일이 생성된 것으로 간주하고 로컬에 해당하는 빈 폴더를 생성합니다.