Version: 2022.2
언어: 한국어
WebGL에서 입력
WebGL 성능 고려사항

WebGL 빌드 디버깅 및 문제 해결

Visual Studio는 Unity WebGL 콘텐츠 디버깅을 지원하지 않습니다.빌드 정보를 얻으려면 다음 팁을 사용하십시오.

브라우저의 JavaScript 콘솔

Unity WebGL은 파일 시스템에 액세스할 수 없으므로 다른 플랫폼처럼 로그 파일을 작성하지 않습니다.하지만 모든 로깅 정보(Debug.Log, Console.WriteLine 또는 Unity의 내부 로깅 등)를 브라우저의 JavaScript 콘솔에 작성합니다.

JavaScript 콘솔을 열려면 다음 단계를 따르십시오.

  • Firefox에서 Windows의 경우 Ctrl-Shift-K를 누르거나 Mac의 경우 Command-Option-K를 누릅니다.
  • Chrome에서 Windows의 경우 Ctrl-Shift-J를 누르거나 Mac의 경우 Command-Option-J를 누릅니다.
  • Safari에서 Preferences > Advanced > Develop로 이동한 후 Command-Option-C를 누릅니다.
  • Microsoft Edge 또는 Internet Explorer에서 F12를 누릅니다.

개발용 빌드

디버깅 목적으로는 Unity에서 개발 빌드를 생성할 수 있습니다(Build Settings 창을 열고 Development Build 체크박스 선택).개발 빌드에서는 프로파일러를 연결할 수 있으며 Unity는 프로파일러를 축소하지 않으므로 출력된 JavaScript 코드에는 여전히 사람이 읽을 수 있는(C++-mangled) 함수 이름이 포함됩니다. 이를 통해 브라우저는 브라우저 오류가 발생하거나, Debug.LogError를 사용하거나, 예외가 발생하여 예외 지원이 비활성화되었을 때 스택 추적을 표시합니다.전체 예외를 지원하는 경우 발생할 수 있는 관리되는 스택 추적(아래 참조)과는 달리, 이러한 스택 추적은 손상된 이름을 가지며 관리되는 코드뿐만 아니라 내부 UnityEngine 코드도 포함되어 있습니다.

예외 지원

WebGL은 다양한 수준의 예외를 지원하지만, 기본적으로 Unity WebGL은 명시적으로 발생한 예외만 지원합니다.자세한 내용은 WebGL용 빌드를 참조하십시오.IL2CPP 생성 코드에서 추가 검사를 실행하는 Full 예외 지원을 활성화하여 관리되는 코드에서 null 참조와 범위를 벗어난 배열 요소에 대한 액세스를 찾아낼 수 있습니다.이러한 추가 검사는 성능에 큰 영향을 미치며 코드 크기와 로드 시간이 증가하므로 디버깅에만 사용해야 합니다.

Full 예외 지원에서는 함수 이름을 내보내 관리되는 코드에 대한 스택 트레이스도 생성합니다. 이러한 이유로 탐지되지 않은 예외와 Debug.Log 문의 스택 트레이스가 콘솔에 표시됩니다. 스택 트레이스 문자열을 얻으려면 System.Environment.Stacktrace를 사용하십시오.

문제 해결

문제: 빌드의 메모리 부족

32비트 브라우저에서 흔히 발생하는 문제입니다. WebGL 메모리 문제와 그 해결 방법에 대한 자세한 내용은 WebGL의 메모리를 참조하십시오.

문제:Application.persistentDataPath에 저장한 파일이 유지되지 않음

Unity WebGL는 세션 간에 유지해야 하는 모든 파일(예: PlayerPrefs, 또는 persistentDataPath에 저장된 파일)을 브라우저 IndexedDB에 보관합니다. 이는 비동기 API이므로 완료되는 시점을 알 수 없습니다.

다음 코드를 호출하여 Unity가 모든 보류 중인 파일 시스템 쓰기 작업을 메모리에서 IndexedDB 파일 시스템으로 플러시하십시오.

FS.syncfs(false, function (err) {
  if (err) {
    console.log("Error: syncfs failed!"); 
  }
 });

오류 메시지: 잘못된 헤더 검사

브라우저 콘솔 로그는 보통 이러한 오류를 잘못된 서버 설정의 결과로 출력합니다.릴리스 빌드를 배포하는 방법에 대한 자세한 내용은 압축된 빌드 배포에 관한 문서를 참조하십시오.

오류 메시지:이 포맷(1)의 압축 해제가 이 플랫폼에서 지원되지 않음

콘텐츠가 Unity WebGL에서 지원하지 않는 LZMA 압축 방식으로 압축된 에셋 번들을 로드하려고 시도하면 브라우저 콘솔 로그가 이러한 오류를 출력합니다.LZ4 압축 방식으로 에셋 번들을 다시 압축하면 이 문제를 해결할 수 있습니다.WebGL의 압축에 관한 자세한 내용은 WebGL 빌드 문서의 에셋 번들 섹션을 참조하십시오.

WebGL에서 입력
WebGL 성능 고려사항