WebGL 플레이어 설정(WebGL Player Settings)
WebGL 브라우저 호환성(WebGL Browser Compatibility)

WebGL 개발 시작(Getting started with WebGL development)

Unity WebGL 이란?

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 네트워킹을 참조하십시오.

  • WebGL 그래픽스 API 는 몇 가지 제한이 있는 OpenGL ES 2.0 및 3.0 과 동일합니다. WebGL 그래픽스을 참조하십시오.

  • WebGL 빌드에서는 Web Audio API 기반 커스텀 백엔드를 오디오에 사용합니다. 기본 오디오 기능만 지원됩니다. WebGL 에서 오디오 사용을 참조하십시오.

  • WebGL 은 AOT 플랫폼이므로 System.Reflection.Emit를 사용하여 코드를 동적으로 생성할 수 없습니다. 다른 모든 IL2CPP 플랫폼, iOS, 그리고 대부분의 콘솔도 마찬가지입니다.

WebGL 플레이어 설정(WebGL Player Settings)
WebGL 브라우저 호환성(WebGL Browser Compatibility)