웹 기술은 웹 브라우저에서 실행되도록 설계된 Unity 웹 애플리케이션에 제한을 적용합니다. 웹 플랫폼용 애플리케이션을 빌드하기 전에 다음 기술적 제한 사항을 숙지해야 합니다.
많이 사용되는 데스크톱 브라우저 버전의 대부분은 Unity 웹 콘텐츠를 지원하지만 다른 수준의 지원을 제공하는 브라우저도 있습니다.
웹 빌드의 다음 기능은 플랫폼 자체의 한계로 인해 사용할 수 없거나 제한됩니다.
Visual Studio에서는 웹 빌드 디버깅이 지원되지 않습니다. 자세한 내용은 웹 빌드 디버깅 및 문제 해결을 참조하십시오.
브라우저에서 파일 시스템에 대한 액세스가 제한되므로 웹 빌드는 Unity 캐시 및 캐시 스크립팅 API를 지원하지 않습니다. 대신 에셋 데이터 및 에셋 번들에 대한 네트워크 요청은 브라우저 캐시에 캐싱됩니다. 웹의 캐시 동작을 참조하십시오.
JavaScript의 스레딩 미지원으로 인해 스레드가 지원되지 않습니다. 이는 성능을 높이기 위한 Unity의 내부 스레드 사용과 스크립트 코드 및 관리되는 DLL의 스레드 사용에 모두 적용됩니다. 기본적으로 System.Threading 네임스페이스의 모든 항목이 지원되지 않습니다.
웹 플랫폼이 지원하지 않는 네트워킹 기능이 몇 가지 있습니다.
보안 문제로 인해 브라우저에서는 네트워킹을 위한 IP 소켓의 직접 액세스를 허용하지 않습니다. 자세한 내용은 웹 네트워킹을 참조하십시오.
System.Net 네임스페이스의 .NET 네트워킹 클래스가 지원되지 않습니다.
웹 플랫폼은 브라우저 내부의 보안 제한으로 인해 네이티브 소켓 액세스를 지원하지 않습니다. 따라서 웹은 ICMP 핑 또는 UnityEngine.Ping 같은 기능도 지원하지 않습니다.
OpenGL ES 그래픽스 라이브러리의 기능을 기반으로 하는__ WebGL__웹 브라우저에서 2D 및 3D 그래픽스를 렌더링하는 JavaScript API입니다. Unity 웹 빌드 옵션을 사용하면 콘텐츠를 JavaScript 프로그램으로 퍼블리시할 수 있습니다. 이 프로그램은 HTML5 기술과 WebGL 렌더링 API를 사용하여 Unity 콘텐츠를 웹 브라우저에서 실행합니다. 자세한 정보
See in Glossary 그래픽스 API를 사용하는 웹 플랫폼에는 몇 가지 제한 사항이 있습니다. 자세한 내용은 웹 그래픽스를 참조하십시오.
웹 빌드에서는 Web Audio API를 기반으로 한 오디오용 커스텀 백엔드를 사용하지만 기본 오디오 기능만 지원됩니다. 자세한 내용은 웹 오디오를 참조하십시오.
웹은 AOT 플랫폼이므로 System.Reflection.Emit를 사용하여 동적 코드를 생성할 수 없습니다. 이는 다른 모든__ IL2CPP__Unity에서 개발한 스크립팅 백엔드로, 여러 플랫폼용 프로젝트를 빌드할 때 Mono 대신 사용할 수 있습니다. 자세한 정보
See in Glossary 플랫폼, iOS, 대부분의 콘솔에서 동일합니다.
Unity는 네이티브 C/C++ 코드에 대한 멀티스레딩 지원을 제공하지만 WebAssembly의 한계로 인해 웹 플랫폼은 아직 C# 멀티스레딩을 지원하지 않습니다. 따라서 웹 플랫폼을 사용하여 빌드된 애플리케이션은 단일 C# 스레드에서 실행되어야 합니다.
참고:
웹 플랫폼은 웹 플레이어 설정에서 네이티브 C/C++ 지원을 활성화한 경우에만 C/C++ 멀티스레딩을 지원합니다.
웹 플랫폼은 문서가 안전한 컨텍스트 내에 있는 경우 멀티스레딩을 지원합니다.
서버에서 다음 HTTP 리스폰스 헤더를 설정해야 합니다.
웹 플랫폼에서 복잡한 비동기 작업을 수행하는 데 권장되는 방법은 코루틴을 사용하는 것입니다. 자세한 내용은 코루틴 기술 자료를 참조하십시오.
다음 요인으로 인해 멀티스레드 지원이 제한됩니다.
웹 플랫폼은 웹 브라우저에서 안전하고 효율적으로 Unity 코드를 실행하는 바이트코드 포맷인 WebAssembly를 사용합니다. 웹 브라우저는 네이티브 WebAssembly 스택에 대한 직접 액세스를 차단하는 안전하고 격리된 환경에서 코드를 실행하도록 설계되었습니다. 이는 멀티스레드 가비지 컬렉션에 영향을 미칩니다. 웹 가비지 컬렉터가 다른 플랫폼에서 여러 프레임에 걸쳐 점진적으로 실행되는 것과 달리 모든 프레임이 끝날 때마다 한 번만 실행되기 때문입니다.
웹의 백그라운드 워커는 서로 독립적으로 병렬로 코드를 실행합니다. 네이티브 플랫폼에서 메인 스레드는 다른 스레드에 신호를 동기식으로 전송하여 가비지 컬렉션을 위해 일시 중지시킬 수 있습니다. 이 동기식 신호는 웹에서 지원되지 않으므로 WebAssembly에서 컴파일된 C# 코드가 여러 스레드에서 실행되지 않습니다.
Unity는 기본 기능만 있는 웹 서버를 사용하여 Build and Run(메뉴: Edit > Build Profiles > Build and Run)으로 생성된 웹 빌드를 호스팅합니다.
서버는 데이터 캐싱을 지원하지 않으므로 다음 파일에 영향을 미칩니다.