Version: Unity 6.0 (6000.0)
언어 : 한국어
Analyze the import process
임포트 활동 창

임포터 일관성

작성하는 스크립트된 임포터를 비롯한 에셋 임포터는 일관된(결정론적인) 결과를 생성해야 합니다. 즉, 입력과 종속성 집합이 동일하면 항상 동일한 출력이 생성되어야 합니다.

임포터에 이를 검증하려는 경우 에셋 데이터베이스에서 다음의 두 가지 방법으로 현재 프로젝트에 있는 에셋의 임포트 결과에 대한 일관성을 확인할 수 있습니다. 다음 두 가지 방법으로 일관성을 확인할 수 있습니다.

  • 에디터에서 하나 이상의 에셋을 수동으로 다시 임포트합니다.

  • -consistencyCheck 커맨드 라인 인자를 사용하여 에디터를 엽니다.

수동 재임포트 일관성 검사

에셋을 수동으로 다시 임포트하면 Unity는 새로운 임포트 결과가 이전에 캐싱된 임포트 결과와 일치하는지 검사합니다.

수동 재임포트를 시작하려면 에셋을 오른쪽 클릭한 후 컨텍스트 메뉴에서 Reimport를 선택하십시오.

그러면 Unity가 결과 임포트의 일관성을 확인합니다. 결과에서 비일관성이 감지되면 Unity는 콘솔 창에 경고와 함께 문제를 일으킨 임포터의 세부 정보를 표시합니다. 예를 들면 다음과 같습니다.

Importer(<name of importer>) generated inconsistent result for asset(guid:<guid of the asset>) "<name of asset>"

루트 에셋을 다시 임포트하면 Unity는 해당 자식 에셋도 다시 임포트하여 일관성 검사를 수행합니다.

커맨드 라인 일관성 검사

일관성 검사를 수행하는 두 번째 방법은 -consistencyCheck 커맨드 라인 인자를 사용하여 Unity를 여는 것입니다. 이렇게 하면 프로젝트의 모든 에셋과 임포터에 대한 일관성 검사를 수행합니다.

커맨드 라인 인자 설명 예시
-consistencyCheck 시작 시 에디터가 일관성 검사를 수행하도록 지시합니다. 기본적으로 ‘로컬’ 확인을 수행합니다(아래 참조). -consistencyCheck
-consistencyCheckSourceMode string 에셋 임포트를 비교할 때 일관성 검사기에서 확인할 소스를 설정합니다. ‘local’ 또는 ‘cacheserver’ 같은 두 가지 값을 사용할 수 있습니다.

‘local’은 로컬에서 모든 에셋을 강제로 다시 임포트하고 임포트가 이전 임포트와 다른지 확인하는 것입니다.

‘cacheserver’는 에셋의 메타데이터를 캐시 서버에 요청하고 결과가 로컬에서 캐시 서버의 결과와 일치하는지 비교하는 것입니다. 이 경우 모든 에셋을 다시 임포트하지는 않습니다.
-consistencyCheckSourceMode local
-consistencyCheckSourceMode cacheserver

시작 시 발견된 모든 비일관성은 콘솔뿐만 아니라 에디터 로그 파일에도 기록됩니다.

일관성 검사는 캐싱 가능한 에셋 임포트만 확인합니다. ScriptedImporter에 대한 캐싱을 비활성화하면 해당 임포트의 일관성 검사도 비활성화됩니다. 스크립트된 임포터에 캐싱을 비활성화하는 방법에 대한 자세한 내용은 AssetImporters.ScriptedImporterAttribute를 참조하십시오.

캐시 서버를 확인 소스로 사용하려면 Unity 액셀러레이터 기술 자료를 참조하십시오.

에디터 로그

임포터의 비일관성이 감지되면 에디터 로그에서 자세한 내용을 확인할 수 있습니다. 이 경우는 다음과 같습니다.

  • 일관성 검사 실패를 일으킨 에셋

  • 해당 에셋의 GUID

  • 에셋 임포트 결과의 콘텐츠 해시

  • 에셋의 이전 리비전과 비교하는 방법

다음은 임포터 비일관성을 보여 주는 에디터 로그의 예제입니다.

ConsistencyChecker - guid: a1945cd7aab67441ba89015f97494624, dependenciesHash.value: fb8cfb407bba82d4daded6031688ba9b, artifactid: 07078a054d3f597b4c2cc47e8e4c0bde, producedFiles[0].extension: , producedFiles[0].contentHash: 8490a5ed35a4361d679e6055a386969e

ConsistencyChecker - guid: a1945cd7aab67441ba89015f97494624, dependenciesHash.value: fb8cfb407bba82d4daded6031688ba9b, artifactid: 07078a054d3f597b4c2cc47e8e4c0bde, producedFiles[1].extension: .info, producedFiles[1].contentHash: 4bd9140e19d2e44782f1131172e514ba

ConsistencyChecker - guid: a1945cd7aab67441ba89015f97494624, dependenciesHash.value: fb8cfb407bba82d4daded6031688ba9b, artifactid: 646d6432767729ea7d288c636183de97, producedFiles[0].extension: , producedFiles[0].contentHash: 5ca760170f85012ce16aa8c22e8d9ea1

ConsistencyChecker - guid: a1945cd7aab67441ba89015f97494624, dependenciesHash.value: fb8cfb407bba82d4daded6031688ba9b, artifactid: 646d6432767729ea7d288c636183de97, producedFiles[1].extension: .info, producedFiles[1].contentHash: 4bd9140e19d2e44782f1131172e514ba

Importer(ScriptedImporter:Assembly-CSharp::RandomImporter) generated inconsistent result for asset(guid:a1945cd7aab67441ba89015f97494624) "Assets/first.rand"

캐시 서버를 이용할 수 없는 경우 일관성 검사기는 에디터 로그에 경고를 출력합니다.

캐시 서버가 프로젝트에 설정되지 않으면 다음의 메시지가 출력됩니다.

ConsistencyChecker - Cacheserver is not enabled

Unity가 캐시 서버에 연결할 수 없으면 다음의 메시지가 출력됩니다.

ConsistencyChecker - Not connected to accelerator/cacheserver

디버깅

Unity 에디터 설치의 Data/Tools 폴더에 있는 ‘binary2text’ 툴을 사용하여 라이브러리 폴더의 콘텐츠를 검사하고 임포터가 무엇을 생성했는지 정확히 파악할 수 있습니다.

예시:

./Data/Tools/binary2text ./myProject/Library/Artifacts/84/8490a5ed35a4361d679e6055a386969e output_file

해시 값은 에셋의 콘텐츠 해시입니다. 보고된 비일관성을 찾고 검사 중에 어떤 콘텐츠가 생성되었는지 확인하려면 에디터 로그를 살펴보십시오.

Analyze the import process
임포트 활동 창