Version: Unity 6.0 (6000.0)
언어 : 한국어
Unity C# 스크립트에서 C/C++/C# 함수 호출
Unity C#, JavaScript 및 C/C++/C# 코드 간에 콜백 생성

정적 라이브러리를 Unity 플러그인으로 컴파일

Emscripten을 사용하여 라이브러리를 컴파일하고 Unity에서 라이브러리를 사용할 수 있습니다. 플러그인 디렉토리에서 직접 C++ 코드를 호출하지 않고 C++ 코드를 캡슐화하는 라이브러리에서 함수를 호출하는 것이 더 유용할 수 있습니다. 이렇게 하면 다음과 같은 장점이 있습니다.

  • 코드를 웹 Unity 프로젝트와 더 쉽게 연동할 수 있습니다.
  • 특히 대형 라이브러리에서는 코드가 C++ 코드에서 함수를 호출하는 것보다 더 나은 성능을 보일 수 있습니다.
  • 다양한 프로젝트에서 코드를 재사용할 수 있습니다.

Unity에서 정적 라이브러리를 사용하기 위한 단계

Unity 플러그인으로 사용할 수 있는 정적 라이브러리를 컴파일하려면 다음 단계를 따르십시오.

  1. Emscripten SDK 다운로드
  2. 기존 프로젝트 스크립트 설정
  3. 컴파일러 옵션 업데이트
  4. 정적 라이브러리 파일 컴파일 및 임포트
  5. C# 스크립트에서 정적 라이브러리 함수 호출

1. Emscripten SDK 다운로드

사용 중인 Unity 버전과 일치하는 Emscripten SDK를 다운로드해야 합니다.

사용 중인 Unity 버전에 적합한 Emscripten 버전을 찾으려면 Emscripten용 웹 네이티브 플러그인을 참조하십시오.

다운로드 링크와 Emscripten SDK를 설치하는 방법에 대한 자세한 내용은 다운로드 및 설치(Emscripten)를 참조하십시오.

2. 기존 프로젝트 스크립트 설정

Emscripten은 gcc 또는 clang 컴파일러를 대체하는 역할을 합니다. 기존 C/C++ 코드가 있는 경우 C++ 프로젝트를 다음과 같이 변경해야 합니다.

  • C/C++ 컴파일러로 “emcc” 사용
  • 정적 링커로 “emar” 사용

자세한 내용은 Emscripten의 프로젝트 컴파일 및 실행 기술 자료를 참조하십시오.

3. 컴파일러 옵션 업데이트

Unity 프로젝트의 Player 설정(메뉴: Edit > Project Settings > Player)이 다음과 같이 설정되어 있는 경우 C/C++ 프로젝트에 일부 컴파일러 옵션을 추가해야 할 수 있습니다.

프로퍼티 설명
Enable Exceptions 이 프로퍼티가 None으로 설정되어 있는 경우 컴파일러 옵션 “-fno-exceptions”를 추가합니다.
Enable Native C/C++ Multithreading 이 프로퍼티가 활성화되어 있는 경우 컴파일러 옵션 “-pthread”를 포함합니다.
Enable WebAssembly 2023 이 프로퍼티가 활성화되어 있는 경우 다음 컴파일러 옵션을 포함합니다.
  • “-fwasm-exceptions”
  • “-sSUPPORT_LONGJMP=wasm”
  • “-mbulk-memory”
  • “-mnontrapping-fptoint”
  • “-msimd128”
  • “-msse4.2”

4. 정적 라이브러리 파일 컴파일 및 임포트

정적 라이브러리 파일을 컴파일한 후 Assets/Plugins 폴더의 Unity 프로젝트로 파일을 임포트합니다.

참고: Plugins 폴더가 없다면 자체 폴더를 만들어야 합니다.

5. Unity C# 스크립트에서 정적 라이브러리 함수 호출

Unity C# 스크립트에서 정적 라이브러리 함수를 호출할 수 있습니다. 함수를 호출하는 방법은 C# 스크립트에서 C 또는 C++ 함수를 호출하는 방법과 동일합니다. 예시는 Unity C# 스크립트에서 C/C++/C# 함수 호출을 참조하십시오.

추가 리소스

Unity C# 스크립트에서 C/C++/C# 함수 호출
Unity C#, JavaScript 및 C/C++/C# 코드 간에 콜백 생성
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961