Version: Unity 6.0 (6000.0)
언어 : 한국어
네이티브 플러그인
로우레벨 네이티브 플러그인 인터페이스

데스크톱 플랫폼용 플러그인 빌드

데스크톱 플랫폼용 플러그인은 C, C++, Objective C에서 작성할 수 있는 네이티브 코드 라이브러리입니다. 이 페이지에서는 macOS, Windows, Linux용 플러그인에 대해 설명합니다. 자세한 내용은 네이티브 플러그인을 참조하십시오.

macOS 플러그인

macOS 플러그인을 번들로 배포하거나, IL2CPP 스크립팅 백엔드를 사용하는 경우 [DllImport("__Internal")] 구문으로 호출할 수 있는 루스 C++ 파일을 배포할 수 있습니다. 루스 C++ 플러그인에 대한 자세한 내용은 IL2CPP용 C++ 소스 코드 플러그인을 참조하십시오.

Xcode를 사용하여 번들 프로젝트를 생성하려면 다음 단계를 따르십시오.

  1. XCode를 엽니다.
  2. File > New > Project > macOS > Framework & Library > Bundle을 선택합니다.

Xcode를 사용한 작업에 대한 자세한 내용은 Apple의 Xcode에 대한 기술 자료를 참조하십시오.

요구 사항

  • 플러그인을 64비트 아키텍처와 호환되는 유니버설 바이너리로 빌드할 수 있습니다. 또는 별도의 dylib 파일을 제공할 수도 있습니다.
  • C++(.cpp) 또는 Objective-C(.mm)를 사용하여 플러그인을 구현하는 경우 네임 맹글링 문제를 피하기 위해 C 링크에 함수를 선언합니다.
extern "C"
{
  float ExamplePluginFunction ();
}

Windows 플러그인

Windows의 플러그인은 익스포트된 함수가 있는 .dll 파일이거나 IL2CPP를 사용하는 경우 루스 C++ 파일입니다. 대부분의 언어와 개발 환경에서 .dll 파일을 생성하여 플러그인을 생성할 수 있습니다. 네임 맹글링 문제를 피하기 위해 C 링크에 C++ 함수를 선언해야 합니다.

Linux 플러그인

Linux의 플러그인은 익스포트된 함수가 있는 .so 파일입니다. 이 라이브러리는 보통 C 또는 C++ 버전이지만 모든 언어를 사용할 수 있습니다. 네임 맹글링 문제를 피하기 위해 C 링크에 C++ 함수를 선언해야 합니다.

Linux용 네이티브 플러그인을 빌드할 때 빌드된 라이브러리에 다른 네이티브 플러그인에 대한 종속성이 있는 경우, 컴파일할 때 해당 라이브러리에 대한 rpath를 지정해야 합니다.

링커 플래그 -Wl, -rpath=$ORIGIN을 추가하여 런타임 검색 경로를 지정합니다. 링커 플래그는 로더가 시스템 검색 경로를 검색하는 것 외에도 라이브러리의 현재 디렉토리에서 종속성을 찾도록 지시합니다. 다른 링커 플래그를 -Wl, -rpath=$ORIGIN과 함께 추가할 수 있지만 Unity는 이를 제어하지 않습니다. 예: /usr/bin/g++ -o binary.c.o -Wl,-rpath=$ORIGIN

또는 환경에서 LD_LIBRARY_PATH=dependency path를 설정하여 로더가 해당 경로를 검색하여 종속성을 찾도록 지시할 수도 있습니다. Linux는 현재 디렉토리의 종속성을 자동으로 검색하지 않습니다. 잘못된 경로로 인해 Unity 에디터에 누락된 라이브러리 오류가 발생하므로 올바른 종속성 검색 경로를 설정해야 합니다.

Unity 내부 플러그인 관리

Unity에서는 플러그인 인스펙터에서 플러그인을 관리합니다. 플러그인 인스펙터를 확인하려면 프로젝트 창에서 플러그인 파일을 선택합니다. 스탠드얼론 플랫폼의 경우 라이브러리가 호환되는 CPU 아키텍처를 선택합니다. 크로스 플랫폼 플러그인의 경우 .bundle 파일(macOS용), .dll 파일(Windows용), .so 파일(Linux용)을 포함해야 합니다. Unity는 타겟 플랫폼에 적합한 플러그인을 자동으로 선택하여 플레이어에 포함합니다. 자세한 내용은 플러그인 임포트 및 설정을 참조하십시오.

플러그인 인스펙터
플러그인 인스펙터

C# 스크립트에서 플러그인 호출

빌드된 플러그인을 Unity 프로젝트의 Assets 폴더 또는 해당 아키텍처별 하위 디렉토리에 배치합니다. 그러면 Unity는 C# 스크립트에서 호출할 때 이름으로 이를 찾습니다. 예: [DllImport ("PluginName")] private static extern float ExamplePluginFunction ();

참고: PluginName 값에 라이브러리 접두사 또는 파일 확장자를 포함하지 마십시오. 예를 들어 플러그인 파일의 실제 이름이 PluginName.dll(Windows)이거나 libPluginName(Linux)인 경우 두 경우 모두 값이 PluginName이어야 합니다.

예제 플러그인

이러한 프로젝트를 다운로드하고 사용하여 Unity에서 플러그인을 구현하는 방법을 배울 수 있습니다.

  • 간단한 플러그인 예시: 이 프로젝트는 숫자 출력, 문자열 출력, 두 개의 플로트 추가, 두 개의 정수 추가와 같은 기본 동작을 구현합니다. 이 프로젝트에는 Windows, macOS, Linux 프로젝트 파일이 포함되어 있습니다.
  • 네이티브 렌더러 플러그인: 모든 정규 렌더링이 완료된 후 C++ 코드에서 회전하는 삼각형을 렌더링하는 로우레벨 렌더링 플러그인으로, Texture.GetNativeTexturePtr을 사용하여 C++ 코드에서 절차적 텍스처를 채우고 액세스합니다. 이 프로젝트에는 Windows, UWP, macOS, 웹, Android 파일이 포함되어 있습니다.

추가 리소스

네이티브 플러그인
로우레벨 네이티브 플러그인 인터페이스
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961