네이티브 플러그인
로우 레벨 네이티브 플러그인 인터페이스(Low-level Native Plugin Interface)

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

이 페이지는 데스크톱 플랫폼(Windows / MacOS X / Linux)에서 네이티브 코드 플러그인(Plugins)에 대해 설명합니다. 이러한 플러그인은 보안상의 이유로 Webplayer에서 비활성화될 수 있다는 점에 유의하십시오.

Mac OS X 용 플러그인을 빌드

MacOSX에서 plugins는 번들로 배포됩니다. 번들 프로젝트 (Bundle Project)는 Xcode의 File->NewProject…를 선택하고, Bundle -> Carbon/Cocoa Loadable Bundle(XCode 3의 경우) 또는 OS X -> Framework&Library -> Bundle(XCode 4의 경우)을 선택하십시오.

만약 C++(. cpp) 혹은 Objective-C(.mm)로 플러그인을 구현하는 경우, 함수가 Name Mangling 문제를 피하기 위해 C 링크에 선언되어 있는지 확인해야 합니다.

extern "C" {
  float FooPluginFunction ();
}

Windows 플러그인 빌드

Windows 용 플러그인은 익스포트된 함수가 있는 DLL 파일입니다. 이것은 실질적으로 어떤 언어나 개발 환경이라도 만들 수 있습니다. Mac OSX와 마찬가지로, 네임 맹글링 (Name Mangling) 문제를 해결하기 위해, 임의의 C++ 함수는 C의 링크를 선언해야 합니다.

Linux 플러그인 빌드

Linux 플러그인은 익스포트된 함수를 가진 .so파일입니다. 이러한 라이브러리는 일반적으로 C 또는 C++로 작성지만, 임의의 언어로도 사용될 수 있습니다. 또한 다른 플랫폼과 마찬가지로, name mangling을 피하기 위해, 모든 C++ 함수는 C 링키지(Linkage)를 선언해야 합니다.

32-bit 및 64-bit 라이브러리

32-bit 및/또는 64-bit 플러그인을 필요로 하는 문제는 플랫폼에 따라 다른 형태로 핸들링되고 있습니다.

Windows 및 Linux

Windows 및 Linux에서 플러그인은 수동으로 관리하거나(즉, 64-bit 플레이어를 빌드하기 전에 Assets/Plugins폴더에 64-bit 라이브러리를 복사해야 하며,32-bit 용 플레이어 빌드 전에, 32-bit 라이브러리를Assets/Plugins폴더에 복사해야 합니다) 또는 32-bit 용 플러그인을Assets/Plugins/x86에 배치하고 64-bit 용 플러그인을 Assets/Plugins/x86_64에 배치할 수 있습니다. 기본적으로 에디터는 아키텍처 특유의 서브 디렉토리를 먼저 보고, 만약 디렉토리가 존재하지 않으면 플러그인을 루트의 Assets/Plugins폴더에서 대신 복사합니다.

유니버설 Linux 빌드 내용은 아키텍처 특유의 서브 디렉토리를 사용할 필요가 있는 것에 유의해주세요 (유니버설 Linux 빌드를 빌드할 때, 에디터는 루트의 Assets/Plugins에서 플러그인을 일절 복사하지 않습니다.)

Mac OS X

Mac OS X에 플러그인을 32-bit, 64-bit 두 아키텍처를 보유하는 유니버설 바이너리로 빌드해야 합니다.

C#에서 플러그인을 사용

일단 빌드된, 번들은 Unity 프로젝트의 Assets->Plugins 폴더에 배치해야 합니다. Unity는 C# 스크립트 함수를 정의할 때의 이름으로 찾을 것입니다. : -

[DllImport ("PluginName")]
private static extern float FooPluginFunction ();

또한 PluginName이 라이브러리의 접두사(prefix)와 파일 확장명을 포함할 필요가 없는 것에 주의하십시오. 예를 들어, 플러그인 파일의 실제 이름은 Windows의 경우 PluginName.dll, Linux의 경우 libPluginName.so입니다. 플러그인 코드를 바꿀 때마다 당신이 프로젝트에서 스크립트를 다시 컴파일 해야 하는 것에 주의하십시오, 그렇지 않으면 플러그인에는 최신의 컴파일된 코드가 아닐 것 입니다.

배포 (Deployment)

크로스 플랫폼 플러그인은 Plugins 폴더에 .bundle(Mac 용), .dll(windows 용), .so(Linux 용) 파일을 포함해야 합니다. 추가 작업은 없습니다. Unity는 자동으로 대상 플랫폼을 위한 플러그인을 추출하여 플레이어에 포함합니다.

샘플

간단한 플러그인

이 플러그인 프로젝트는 몇 가지 매우 간단한 기능을 제공합니다 (숫자 출력, string 출력, 소수의 덧셈, 정수의 덧셈). 이 예제는 당신의 첫 Unity 플러그인으로 도움이 될 것입니다. 이 프로젝트는 여기에서 찾을 수 있습니다. 또한 이 프로젝트는 Windows 및 Mac 용, Linux 용 프로젝트가 포함되어 있습니다.

C++ 코드에서 렌더링

멀티 스레드 렌더링 플러그인의 멀티 플랫폼 동작 예는, Native Plugin Interface 페이지에서 찾을 수 있습니다.

네이티브 플러그인
로우 레벨 네이티브 플러그인 인터페이스(Low-level Native Plugin Interface)