Version: 2022.3
언어: 한국어
WebGL 개발
Unity WebGL의 메모리

Emscripten용 WebGL 네이티브 플러그인

Unity는 Emscripten 컴파일러 툴체인을 사용하여 C 및 C++로 작성한 Unity 런타임 코드를 WebAssembly(Wasm이라고도 함)로 크로스 컴파일할 수 있습니다.Emscripten은 작은 코드를 생성하고 로드 시간과 메모리 효율이 높으며 기본 속도에 가까운 실행을 목표로 합니다.Unity의 Wasm에 대한 자세한 내용은 WebAssembly 소개 블로그 게시물을 참조하십시오.

Unity는 IL2CPP를 사용하여 C# 스크립트의 .NET 게임 코드를 Wasm으로 전환합니다.IL2CPP는 .NET 바이트코드를 가져와 해당 C++ 소스 파일로 전환한 다음, Emscripten을 사용하여 컴파일하여 스크립트를 Wasm으로 전환합니다.

타겟 버전

Unity는 Emscripten 컴파일러를 WebGL 플랫폼 패키지와 함께 번들로 제공하므로 수동으로 다운로드할 필요가 없습니다.에디터에서 사용하는 Emscripten 버전은 에디터 버전에 따라 다릅니다.

Unity 버전 Emscripten 버전 지원되는 네이티브 플러그인 파일 포맷
Unity 2022.2 이상 Emscripten 3.1.8-unity .a, .bc
Unity 2021.2 이상 Emscripten 2.0.19.6-unity .a, .bc
Unity 2019.2부터 2021.2까지 1.38.11-unity .bc
Unity 2018.4부터 2019.2까지 1.37.40-unity .bc
Unity 2018.2부터 2018.4까지 1.37.33-unity .bc

참고:

  • 다음 리스트는 위의 표에 나열된 파일 포맷의 머리글자어에 대한 확장자를 제공합니다.

    • GNU 아카이브 파일 포맷(.a)
    • WebAssembly 오브젝트 파일(.o)
    • LLVM Bitcode 파일 포맷(.bc)
  • Unity는 Emscripten 2.0 이전 버전에서는 Bitcode 플러그인(.bc 타입의 파일)을 빌드할 것을 권장합니다.Emscripten 2.0부터는 .o 타입의 Wasm 오브젝트 파일인 Wasm Object File 플러그인을 빌드하여 .a 타입의 GNU 아카이브 파일에 번들로 제공하는 것이 좋습니다.

Emscripten 툴체인의 정확한 버전 경로는 emscripten-version.txt가 있는 다음 위치에서 확인할 수 있습니다.

C:\Program Files\Unity\Hub\Editor\<Editor version>\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emscripten-version.txt

Emscripten으로 네이티브 플러그인 컴파일

Unity 애플리케이션용 네이티브 C/C++ 플러그인을 생성하는 경우, 프로젝트에 C/C++ 코드를 번들로 제공하거나(네이티브 플러그인 참조) Emscripten 컴파일러 툴체인을 사용하여 네이티브 코드를 플러그인 아카이브에 미리 빌드할 수 있습니다.

플러그인 코드를 미리 빌드하려면 Emscripten 컴파일러 툴체인을 사용해야 합니다.LLVM 바이너리 포맷 호환성을 보장하려면 플러그인을 컴파일하는 데 사용되는 Emscripten의 버전이 Unity에서 사용하는 Emscripten의 버전과 일치해야 합니다.

일반적으로 플러그인은 정적 라이브러리 아카이브 포맷으로 컴파일됩니다.Unity 2021.2(Emscripten 2.0) 이전 버전의 경우 LLVM Bitcode 파일 포맷(.bc)이 기본 플러그인 포맷입니다.

Unity 2021.2부터 기본 플러그인 포맷은 WebAssembly 오브젝트 파일(.o)을 포함하는 GNU 아카이브 파일 포맷(.a)입니다.이전 LLVM Bitcode .bc 플러그인 파일은 계속 지원되지만, 이를 사용하면 컴파일 시간에 부정적인 영향을 미칠 수 있습니다.

참고:한 Unity 버전에서 다른 Emscripten 버전을 사용하는 Unity 버전으로 네이티브 플러그인을 마이그레이션하는 경우, LLVM 컴파일러 프로젝트는 컴파일러 버전 간에 빌드 아티팩트 파일의 바이너리 호환성을 보장하지 않으므로 Unity 플러그인을 소스에서 다시 컴파일할 것을 권장합니다.

추가 리소스:

WebGL 개발
Unity WebGL의 메모리