Version: 2023.2
언어: 한국어
웹의 커서 잠금 및 전체 화면 모드
웹 빌드 디버깅 및 문제 해결

웹 성능 고려사항

일반적으로 WebGL 그래픽스 API가 하드웨어 가속 렌더링에 GPU를 사용하기 때문에 웹 성능은 GPU의 네이티브 앱과 비슷합니다. 유일한 예외는 WebGL API 호출과 셰이더를 OS 그래픽스 API(일반적으로 Windows의 DirectX, Mac의 OpenGL 및 Linux)로 변환하는 데 약간의 오버헤드가 있다는 점입니다.

CPU에서 Emscripten은 코드를 WebAssembly로 변환하므로 해당 성능은 사용 중인 웹 브라우저에 기반합니다. 자세한 내용은 WebAssembly 로드 시간 및 성능에 대한 Unity 블로그 포스트를 참조하십시오.

다음은 알아두어야 할 다른 고려 사항입니다.

  • JavaScript 언어는 멀티스레딩 또는 SIMD를 지원하지 않습니다.
  • 이러한 기능을 활용하는 모든 코드는 다른 코드보다 속도가 느려집니다.
  • 웹 스크립트에 스레딩 또는 SIMD 코드를 작성할 수 없지만, 일부 엔진 파트는 대개 멀티 스레드되거나 SIMD 최적화되므로 웹의 성능 소모를 낮춥니다. 멀티 스레드와 SIMD 최적화가 모두 적용되는 웹 스키닝을 예로 들 수 있습니다.

팁: 웹이 아닌 플랫폼에서 Unity가 작업을 여러 스레드로 분산하는 방법을 확인하려면 Unity의 새로운 타임라인 프로파일러를 참조하십시오.

성능에 영향을 미치는 웹 관련 설정

성능을 개선하려면 웹용 플레이어 설정에서 Other Settings > Stack Trace를 확장하여 Exception supportNone으로 설정하십시오.

웹 프로파일링

웹은 Unity 프로파일러를 지원합니다. 프로파일러 설정 방법은 프로파일러 기술 자료를 참조하십시오.

백그라운드 탭의 웹 콘텐츠

웹 플랫폼용 플레이어 설정에서 Run in background를 활성화하거나 Application.runInBackground를 활성화하면 포커스가 캔버스 또는 브라우저 창에서 벗어나도 콘텐츠가 계속 실행됩니다.

그러나 일부 브라우저는 배경 탭에서 실행 중인 콘텐츠 속도를 조절할 수 있습니다.콘텐츠가 있는 탭이 표시되지 않으면 대부분의 브라우저에서는 콘텐츠가 1초에 한 번씩만 업데이트됩니다.이로 인해 Time.maximumDeltaTime의 기본값이 1초보다 작으므로 기본 설정을 사용하면 Time.time이 일반적인 경우보다 더 느리게 진행됩니다.

웹 성능 속도 저하

CPU 사용량을 줄이기 위해 일부 상황에서 웹 콘텐츠를 더 낮은 프레임 속도로 실행하고자 할 수 있습니다. 예를 들어, 다른 플랫폼에서는 Application.targetFrameRate API를 사용하여 이를 수행할 수 있습니다.

성능을 낮게 조절하고 싶지 않으면 API를 높은 값 대신 기본값인 –1로 설정해야 합니다. 그러면 프레임 속도가 브라우저 렌더 루프에서 가장 부드러운 애니메이션을 재생할 수 있도록 조정됩니다. 이렇게 하면 Unity가 목표 프레임 속도를 달성하기 위해 스스로 루프 타이밍을 찾는 것보다 더 나은 결과를 얻을 수도 있습니다.

웹의 커서 잠금 및 전체 화면 모드
웹 빌드 디버깅 및 문제 해결