Version: Unity 6.0 (6000.0)
언어 : 한국어
지원 중단 브라우저 상호 작용 코드 교체
Unity 웹의 메모리

Emscripten용 웹 네이티브 플러그인

Unity는 Emscripten 컴파일러 툴체인을 사용하여 C 및 C++로 작성된 Unity 런타임 코드를 WebAssembly(Wasm이라고도 함)로 교차 컴파일합니다. Emscripten은 소형 코드를 생성하고 로드 시간과 메모리를 효율적으로 사용하며, 네이티브 속도와 가까운 실행을 목표로 합니다.

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

타겟 버전

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

Unity Version Emscripten 버전 지원되는 네이티브 플러그인 파일 포맷
Unity 2023.2 이상 Emscripten 3.1.38-unity .a, .bc
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.1까지 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)
  • Emscripten 2.0 이전의 Emscripten 버전에서는 Bitcode 플러그인(.bc 유형의 파일)을 빌드할 것을 권장합니다. Emscripten 2.0 이상에서 Unity는 .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 버전을 사용하는 버전으로 네이티브 플러그인을 마이그레이션하는 경우, LLVM 컴파일러 프로젝트는 컴파일러 버전 간에 빌드 아티팩트 파일의 바이너리 호환성을 보장하지 않으므로 Unity 플러그인을 소스에서 다시 컴파일할 것을 권장합니다.

Emscripten 빌드 플래그

WebAssembly 2023 또는 C/C++ 멀티스레딩과 함께 사용할 WebAssembly 오브젝트 파일을 컴파일하는 경우 다음 Emscripten 빌드 플래그를 포함하십시오. 이 플래그가 없으면 코드가 Unity로 작성된 코드와 올바르게 연결되지 않을 수 있습니다.

Target 필수 Emscripten 빌드 플래그
WebAssembly 2023 -msimd128 -fwasm-exceptions -mbulk-memory -mnontrapping -fptoint -msse4.2 -sWASM_BIGINT -sSUPPORT_LONGJMP=wasm
C/C++ 네이티브 멀티스레딩 -pthread

추가 리소스:

지원 중단 브라우저 상호 작용 코드 교체
Unity 웹의 메모리