Visual Studio는 Unity 웹 콘텐츠 디버깅을 지원하지 않습니다. 빌드 정보를 얻으려면 다음 팁을 사용하십시오.
Unity 웹 플랫폼은 파일 시스템에 액세스할 수 없으므로 다른 플랫폼처럼 로그 파일을 작성하지 않습니다. 하지만 Debug.Log
, Console.WriteLine
또는 Unity의 내부 로깅과 같은 모든 로깅 정보를 브라우저의 JavaScript 콘솔에 기록합니다.
JavaScript 콘솔을 열려면 다음 단계를 따르십시오.
디버깅 목적으로는 Unity에서 개발용 빌드를 만드는 것이 좋습니다(Build Settings 창을 열고 Development Build 체크박스 활성화). 개발용 빌드는 프로파일러에 연결할 수 있으며 Unity에서 최소화되지 않습니다. 따라서 출력되는 JavaScript 코드는 사람이 읽을 수 있는 C++-mangled) 함수 이름을 포함합니다.
이를 통해 브라우저는 브라우저 오류가 발생하거나, Debug.LogError
를 사용하거나, 예외 지원이 비활성화된 상태에서 예외가 발생하는 경우 스택 추적을 표시할 수 있습니다. 전체 예외 지원을 제공할 때 발생할 수 있는 관리되는 스택 추적과 달리, 이 스택 추적은 손상된 이름을 가지며 관리되는 코드와 내부 Unity Engine 코드를 모두 포함합니다.
웹은 여러 예외 수준을 지원하지만 기본적으로 Unity 웹은 명시적으로 발생하는 예외만 지원합니다. 자세한 내용은 웹 애플리케이션 빌드를 참조하십시오. Full 예외 지원을 활성화할 수 있으며, 이 경우 관리되는 코드에서 null 참조와 범위 초과 배열 요소에 대한 액세스를 찾아내기 위해 IL2CPP 생성 코드로 추가 검사를 진행할 수 있습니다. 이러한 추가 검사 과정은 성능에 큰 영향을 주고 코드 용량과 로드 시간을 증가시키므로, 디버깅 목적으로만 사용하는 것이 좋습니다.
전체 예외 지원에서는 함수 이름을 내보내서 관리되는 코드에 대한 스택 추적을 생성하기도 합니다. 따라서 검색되지 않은 예외와 Debug.Log
문의 스택 추적이 콘솔에 표시됩니다. System.Environment.Stacktrace
를 사용하여 스택 추적 문자열을 얻을 수 있습니다.
이는 특히 32비트 브라우저에서 흔히 발생하는 문제입니다. 웹 메모리 문제와 해결 방법에 대한 자세한 내용은 Unity 웹 메모리 기술 문서를 참조하십시오.
브라우저 콘솔 로그는 보통 이러한 오류를 잘못된 서버 설정의 결과로 출력합니다.릴리스 빌드를 배포하는 방법에 대한 자세한 내용은 압축된 빌드 배포에 관한 문서를 참조하십시오.
콘텐츠가 Unity 웹에서 지원하지 않는 LZMA 압축 방식으로 압축된 에셋 번들을 로드하려고 시도하면 브라우저 콘솔 로그가 이러한 오류를 출력합니다. LZ4 압축 방식으로 에셋 번들을 다시 압축하면 이 문제를 해결할 수 있습니다. 웹의 압축에 관한 자세한 내용은 웹 빌드 문서의 에셋 번들 섹션을 참조하십시오.