일반적으로 WebGL 그래픽스 API가 하드웨어 가속 렌더링에 GPU를 사용하기 때문에 웹 성능은 GPU의 네이티브 앱과 비슷합니다. 유일한 예외는 WebGL API 호출과 셰이더를 OS 그래픽스 API(일반적으로 Windows의 DirectX, Mac의 OpenGL 및 Linux)로 변환하는 데 약간의 오버헤드가 있다는 점입니다.
CPU에서 Emscripten은 코드를 WebAssembly로 변환하므로 해당 성능은 사용 중인 웹 브라우저에 기반합니다. 자세한 내용은 WebAssembly 로드 시간 및 성능에 대한 Unity 블로그 포스트를 참조하십시오.
다음은 알아두어야 할 다른 고려 사항입니다.
팁: 웹이 아닌 플랫폼에서 Unity가 작업을 여러 스레드로 분산하는 방법을 확인하려면 Unity의 새로운 타임라인 프로파일러를 참조하십시오.
성능을 개선하려면 웹용 플레이어 설정에서 Other Settings > Stack Trace를 확장하여 Exception support를 None으로 설정하십시오.
웹은 Unity 프로파일러를 지원합니다. 프로파일러 설정 방법은 프로파일러 기술 자료를 참조하십시오.
웹 플랫폼용 플레이어 설정에서 Run in background를 활성화하거나 Application.runInBackground를 활성화하면 포커스가 캔버스 또는 브라우저 창에서 벗어나도 콘텐츠가 계속 실행됩니다.
그러나 일부 브라우저는 배경 탭에서 실행 중인 콘텐츠 속도를 조절할 수 있습니다.콘텐츠가 있는 탭이 표시되지 않으면 대부분의 브라우저에서는 콘텐츠가 1초에 한 번씩만 업데이트됩니다.이로 인해 Time.maximumDeltaTime의 기본값이 1초보다 작으므로 기본 설정을 사용하면 Time.time이 일반적인 경우보다 더 느리게 진행됩니다.
CPU 사용량을 줄이기 위해 일부 상황에서 웹 콘텐츠를 더 낮은 프레임 속도로 실행하고자 할 수 있습니다. 예를 들어, 다른 플랫폼에서는 Application.targetFrameRate API를 사용하여 이를 수행할 수 있습니다.
성능을 낮게 조절하고 싶지 않으면 API를 높은 값 대신 기본값인 –1로 설정해야 합니다. 그러면 프레임 속도가 브라우저 렌더 루프에서 가장 부드러운 애니메이션을 재생할 수 있도록 조정됩니다. 이렇게 하면 Unity가 목표 프레임 속도를 달성하기 위해 스스로 루프 타이밍을 찾는 것보다 더 나은 결과를 얻을 수도 있습니다.