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

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

이 페이지에서는 데스크톱 플랫폼(Windows/Mac OS X/Linux)용 네이티브 코드 플러그인에 대해 설명합니다.

Mac OS X 용 플러그인 빌드

Mac OSX 에서 플러그인은 번들로 배포됩니다. File->NewProject… 를 선택한 후 (xCode 3 에 있는)Bundle -> Carbon/Cocoa Loadable Bundle 또는 (xCode 4 에 있는)OS X -> Framework & Library -> Bundle 을 선택하여 XCode 로 번들 프로젝트를 생성할 수 있습니다.

C++ (.cpp) 또는 Objective-C(.mm)를 사용하여 플로그인을 실행할 경우네임 맹글링 문제를 피하기 위해 함수가 C 링크에 선언되어 있는지 확인해야 합니다.

extern "C" {
  float FooPluginFunction ();
}

Windows 용 플러그인 빌드

Windows 에 있는 플러그인은 익스포트된 함수가 있는 DLL 파일입니다. DLL 파일을 생성할 수 있는 모든 언어 및 개발 환경에서 플러그인을 생성할 수 있습니다. Mac OSX 와 마찬가지로 네임 맹글링 문제를 피하기 위해 C 링크에 C++ 함수를 선언해야 합니다.

Linux 용 플러그인 빌드

Linux 플러그인은 익스포트 함수가 있는 .so 파일입니다. 이 라이브러리는 일반적으로 C 또는 C++로 작성되지만 다른 언어로도 작성할 수 있습니다. 다른 플랫폼에서와 마찬가지로 네임 맹글링 문제를 피하기 위해 C 링크에 C++ 함수를 선언해야 합니다.

32 비트 라이브러리와 64 비트 라이브러리

32 비트 및/또는 64 비트 플러그인을 필요로 하는 문제는 플랫폼에 따라 해결 방식이 달라집니다.

Windows 및 Linux

Windows 와 Linux 에서 플러그인은 수동으로 관리할 수 있습니다(예를 들어, 64 비트 플레이어를 빌드하기 전에 64 비트 라이브러리를 에셋/플러그인 폴더에 복사해야 하며 32 비트 플레이어를 빌드하기 전에 32 비트 라이브러리를 에셋/플러그인 폴더에 복사해야 합니다). 또는 32 비트 버전 플러그인을 에셋/플러그인/x86에 배치하거나 64 비트 버전 플러그인을 에셋/플러그인/x86_64에 배치할 수 있습니다. 디폴트로 에디터는 아키텍처 특유의 하위 디렉토리를 먼저 살핀 후 해당 디렉토리가 없을 경우 에셋/플러그인 폴더의 루트에서 플러그인을 복사합니다.

유니버설 Linux 빌드 시 아키텍처 특유의 하위 디렉토리를 사용해야 한다는 점을 유의하시기 바랍니다(유니버설 Linux 빌드를 빌드할 때 에디터는 루트의 에셋/플러그인에서 플러그인을 복사하지 않습니다).

Mac OS X

Mac OS X 의 경우 플러그인을 32 비트 아키텍처와 64 비트 아키텍처를 포함하는 유니버설 바이너리로 빌드해야 합니다.

C#에서 플러그인 사용

번들이 빌드되면 Unity 프로젝트의 Assets->Plugins 폴더(또는 적절한 아키텍처 특유의 하위 디렉토리)에 배치해야 합니다. 이와 같은 함수를 C# 스크립트에 정의할 때 Unity 는 이름으로 함수를 찾습니다.

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

PluginName 은 라이브러리 접두사와 파일 확장자를 포함할 필요가 없다는 점에 유의하시기 바랍니다. 예를 들어 플러그인 파일의 실제 이름은 Windows 의 경우 PluginName.dll, Linux 의 경우 libPluginName.so 입니다. 플러그인 코드를 바꿀 때마다 프로젝트의 스크립트를 다시 컴파일해야 하며, 그렇지 않을 경우 플러그인에 컴파일된 코드는 최신이 아니게 됩니다.

배포

크로스 플랫폼 플러그인의 경우 플러그인 폴더에 .bundle 파일(Mac 용), .dll 파일(Windows 용), 그리고 .so 파일(Linux 용)을 포함해야 합니다. 그 후 해야 하는 추가 작업은 없습니다. Unity 는 대상 플랫폼에 맞는 플러그인을 자동으로 선택하여 플레이어에 포함합니다.

예제

가장 간단한 플러그인

이 플러그인 프로젝트는 일부 매우 기본적인 기능(숫자 출력, 스트링 출력, 두 개의 플로트 추가, 두 개의 정수 포함)만을 제공합니다. Unity 플러그인이 처음일 경우 이 예시는 매우 유용할 겁니다. 프로젝트는 여기에서 찾을 수 있으며 Windows 용, Mac 용, 그리고 Linux 용 프로젝트가 포함되어 있습니다.

C++ 코드에서 렌더링

멀티 스레드 렌더링과 작동하는 멀티 플랫폼 예시는 네이티브 플러그인 인터페이스 페이지에서 찾을 수 있습니다.

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