Unity는 C, C++, Objective-C 등으로 작성할 수 있는 네이티브 코드의 라이브러리인 네이티브 플러그인을 지원합니다. 플러그인은 C#으로 작성한 코드가 이러한 라이브러리에서 함수를 호출하게 해줍니다. 이는 Unity를 미들웨어 라이브러리나 기존의 C/C++ 코드와 통합시키는 기능입니다.
네이티브 플러그인은 C# 스크립트가 다른 스크립트에 노출하는 단순한 C 인터페이스를 제공합니다. Unity는 또한 네이티브 플러그인이 특정 로우레벨 렌더링 이벤트가 발생했을 때(예를 들어 그래픽스 기기를 만들 때) 익스포트하는 함수도 호출할 수 있습니다. 자세한 내용은 로우레벨 네이티브 플러그인 인터페이스를 참조하십시오.
네이티브 플러그인에 대한 예제는 네이티브 렌더러 플러그인을 참조하십시오.
네이티브 플러그인을 사용하려면 다음 단계를 수행하십시오.
타겟 플랫폼에서 네이티브 코드 컴파일러로 네이티브 플러그인을 빌드합니다. 플러그인 함수가 C 기반 호출 인터페이스를 사용하므로 네임 맹글링(name mangling) 문제를 피하기 위해 함수를 반드시 C 링크에 선언해야 합니다.
단일 함수를 가진 간단한 네이티브 라이브러리는 다음과 같이 보이는 소스 코드를 가집니다.
float ExamplePluginFunction () { return 5.0F; }
Unity에서 이 코드에 액세스하려면 다음의 C# 스크립트를 사용하십시오.
using UnityEngine;
using System.Runtime.InteropServices;
class ExampleScript : MonoBehaviour {
#if UNITY_IPHONE
// On iOS plugins are statically linked into
// the executable, so we have to use __Internal as the
// library name.
[DllImport ("__Internal")]
#else
// Other platforms load plugins dynamically, so pass the
// name of the plugin's dynamic library.
[DllImport ("PluginName")]
#endif
private static extern float ExamplePluginFunction ();
void Awake () {
// Calls the ExamplePluginFunction inside the plugin
// And prints 5 to the console
print (ExamplePluginFunction ());
}
}
다음 페이지에서 플러그인에 렌더링을 구현하는 방법을 포함하여 네이티브 플러그인을 사용하여 타사 코드 라이브러리와 상호작용하는 방법에 대해 더 자세히 알아볼 수 있습니다.