웹 기술은 웹 브라우저에서 실행되도록 설계된 Unity 웹 애플리케이션에 제한을 가합니다. 웹 플랫폼용 애플리케이션을 빌드하기 전에 다음과 같은 기술적 제한 사항을 숙지해야 합니다.
많이 사용되는 대부분의 데스크톱 브라우저 버전은 Unity 웹 콘텐츠를 지원하지만, 브라우저마다 서로 다른 수준의 지원을 제공합니다. 예를 들어 Unity 웹은 모바일 디바이스를 지원하지 않습니다.
웹 빌드에서 다음 기능은 플랫폼 자체의 제약으로 인해 사용이 불가하거나 제한됩니다.
Visual Studio에서 웹 빌드 디버깅. 웹 빌드 디버깅 및 문제 해결을 참조하십시오.
파일 시스템에 대한 액세스가 브라우저에서 제한되어 있으므로 웹 빌드는 Unity 캐시 및 캐시 스크립팅 API를 지원하지 않습니다. 대신 에셋 데이터 및 에셋 번들에 대한 네트워크 요청이 브라우저 캐시에 캐시됩니다. 웹에서의 캐시 동작을 참조하십시오.
JavaScript에서 스레딩이 지원되지 않기 때문에 스레드는 지원되지 않습니다.Unity에서 성능을 높이기 위해 스레드를 내부적으로 사용하는 경우와 스크립트 코드 및 관리 dll에서 스레드를 사용하는 경우 모두 스레딩이 지원되지 않습니다.기본적으로 System.Threading
네임스페이스 안에 있는 것은 모두 지원되지 않습니다.
보안 문제로 인해 브라우저에서는 네트워킹을 위한 IP 소켓의 직접 액세스를 허용하지 않습니다. 웹 네트워킹을 참조하십시오.
OpenGL ES 그래픽스 라이브러리의 기능을 기반으로 하는 WebGL 그래픽스 API의 제한 사항입니다. 웹 그래픽스를 참조하십시오.
웹 빌드는 Web Audio API를 기반으로 하는 오디오용 커스텀 백엔드를 사용하지만 기본 오디오 기능만 지원합니다. 웹에서 오디오 사용을 참조하십시오.
웹은 AOT 플랫폼이므로 System.Reflection.Emit
을 사용한 동적 코드 생성을 허용하지 않습니다. 이는 다른 모든 IL2CPP 플랫폼, iOS 및 대부분의 콘솔에서 동일합니다.
System.Net
네임스페이스 내의 .NET 네트워킹 클래스는 지원되지 않습니다.
Unity는 네이티브 C/C++ 코드에 대해 멀티스레딩을 지원하지만, 웹 플랫폼은 WebAssembly의 제한으로 인해 아직 C# 멀티스레딩을 지원하지 않습니다. 따라서 웹 플랫폼을 사용하여 빌드된 애플리케이션은 단일 C# 스레드에서 실행되어야 합니다.
참고:
웹 플랫폼은 사용자가 웹 플레이어 설정에서 네이티브 C/C++ 지원을 활성화한 경우에만 C/C++ 멀티스레딩을 지원합니다.
웹 플랫폼은 문서가 보안 컨텍스트 내에 있을 때 멀티스레딩을 지원합니다.
다음 HTTP 응답 헤더를 서버에서 설정해야 합니다.
웹 플랫폼에서 복잡한 비동기 작업을 수행하는 데 권장되는 방법은 코루틴을 사용하는 것입니다. 자세한 내용은 코루틴 기술 자료를 참조하십시오.
멀티스레딩 지원을 제한하는 요인은 다음과 같습니다.
웹 플랫폼은 웹 브라우저에서 Unity 코드를 안전하고 효율적으로 실행하기 위한 바이트코드 포맷인 WebAssembly를 사용합니다. 웹 브라우저는 안전하고 격리된 환경에서 코드를 실행하도록 설계되어 네이티브 WebAssembly 스택에 대한 직접 액세스를 차단합니다. 웹 가비지 컬렉터는 다른 플랫폼에서 여러 프레임에 걸쳐 점진적으로 실행되지 않고 프레임이 끝날 때마다 한 번만 실행되므로, 이는 멀티스레드 가비지 컬렉션에 영향을 미칩니다.
웹의 백그라운드 워커는 서로 독립적으로 및 병렬로 코드를 실행합니다. 네이티브 플랫폼에서는 메인 스레드가 가비지 컬렉션을 위해 일시 중지하도록 다른 스레드에 신호를 동기적으로 보낼 수 있습니다. 웹에서는 이러한 동기식 시그널링이 지원되지 않으므로, WebAssembly로 컴파일된 C# 코드가 여러 스레드에서 실행되지 않습니다.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.