Unity는 WebGL 빌드 옵션을 사용하면 콘텐츠를 JavaScript 프로그램으로 퍼블리시할 수 있습니다. 이 프로그램은 HTML5 기술과 WebGL 렌더링 API를 사용하여 Unity 콘텐츠를 웹 브라우저에서 실행합니다. WebGL 콘텐츠를 빌드하고 테스트하려면 Build Player 창에서 WebGL 빌드 타겟을 선택하고 Build & Run 을 클릭합니다.
WebGL에서 실행하려면 모든 코드가 JavaScript여야 합니다. (C 및 C++로 작성된) Unity 런타임 코드를 asm.js JavaScript로 크로스 컴파일하려면 emscripten 컴파일러 툴체인을 사용합니다. asm.js는 매우 최적화하기 쉬운 JavaScript의 서브셋으로서, 이를 통해 JavaScript 엔진은 asm.js 코드를 매우 효율적인 네이티브 코드로 AOT-컴파일할 수 있습니다.
.NET 게임 코드(C# 및 UnityScript 스크립트)를 JavaScript로 변환하려면 IL2CPP라는 기술을 사용합니다. IL2CPP는 .NET 바이트코드를 해당 C++ 소스 파일로 변환하고, 이 파일은 스크립트를 JavaScript로 변환하기 위해 emscripten을 사용하여 컴파일됩니다.
Unity WebGL 콘텐츠는 대부분의 주요 데스크톱 브라우저의 최신 버전에서 지원되지만, 각 브라우저에서 제공하는 지원 수준의 차이가 있습니다. Unity WebGL은 현재 모바일 디바이스를 지원하지 않습니다.
주로 플랫폼의 한계 때문에 Unity의 일부 기능은 WebGL 빌드에 사용할 수 없습니다. 구체적으로 설명하면 다음과 같습니다.
스레드는 지원되지 않습니다. JavaScript에서 스레딩이 지원되지 않기 때문입니다. Unity에서 성능을 높이기 위해 스레드를 내부적으로 사용하는 경우와 스크립트 코드 및 관리 dll에서 스레드를 사용하는 경우 모두 스레딩이 지원되지 않습니다. 기본적으로 System.Threading
네임스페이스 안에 있는 것은 모두 지원되지 않습니다.
WebGL 빌드를 MonoDevelop 또는 Visual Studio에서 디버깅할 수 없습니다. WebGL 빌드 디버깅 및 문제 해결을 참조하십시오.
보안 문제로 인해, 브라우저에서는 네트워킹을 위한 IP 소켓의 직접 액세스를 허용하지 않습니다. WebGL 네트워킹을 참조하십시오.
The WebGL graphics API is equivalent to OpenGL ES 2.0, which has some limitations. See: WebGL Graphics.
WebGL 빌드에서는 Web Audio API 기반 커스텀 백엔드를 오디오에 사용합니다. 기본 오디오 기능만 지원됩니다. WebGL에서 오디오 사용을 참조하십시오.
WebGL은 AOT 플랫폼이므로 System.Reflection.Emit
를 사용하여 코드를 동적으로 생성할 수 없습니다. 다른 모든 IL2CPP 플랫폼, iOS, 그리고 대부분의 콘솔도 마찬가지입니다.