Unity 네이티브 플러그인 가이드
이 문서는 Unity의 공식 매뉴얼을 기반으로 하여, 데스크톱 플랫폼을 위한 네이티브 플러그인을 만드는 방법과 관련된 내용을 간단히 설명합니다. 본 문서는 Unity에서 C, C++ 또는 Objective-C로 작성한 플러그인을 사용하는 방법을 다룹니다.
네이티브 플러그인이란?
네이티브 플러그인은 C, C++ 또는 Objective-C로 작성된 코드로, Unity 애플리케이션에서 고급 성능을 제공합니다. 주로 플랫폼 종속적인 기능을 활용하거나 특정 저수준 API와의 상호작용을 통해 성능을 향상시키기 위해 사용됩니다.
플러그인 종류
플러그인은 주로 세 가지 플랫폼에서 사용됩니다:
플랫폼 | 파일 확장자 |
---|---|
macOS | .bundle |
Windows | .dll |
Linux | .so |
macOS 플러그인
macOS용 플러그인은 .bundle
파일로 배포되거나 IL2CPP 스크립팅 백엔드를 사용할 경우 DllImport("__Internal")
을 통해 호출될 수 있습니다.
Xcode에서 플러그인 프로젝트 생성하기
- Xcode를 열고
File > New > Project > macOS > Framework & Library > Bundle
을 선택합니다. - 플러그인을 작성합니다.
Windows 플러그인
Windows의 플러그인은 익스포트된 함수를 가진 .dll
파일로 작성되며, C++로 작성 시 네임 맹글링 문제를 피하기 위해 C링크에 함수를 선언해야 합니다.
Linux 플러그인
Linux용 플러그인은 .so
파일로 작성되며, 이 또한 C링크에 모든 C++ 함수를 선언하여 네임 맹글링 문제를 방지해야 합니다.
- 빌드된 라이브러리에 다른 네이티브 플러그인에 대한 종속성이 있을 경우,
rpath
를 지정하여 경로를 설정해야 합니다.
링커 플래그 | 설명 |
---|---|
-Wl,-rpath=$ORIGIN |
현재 디렉토리에서 종속성을 찾도록 지시합니다. |
Unity에서 플러그인 관리하기
Unity의 플러그인 인스펙터를 사용하여 플러그인 파일을 관리할 수 있습니다. 스탠드얼론 플랫폼의 경우, 호환되는 CPU 아키텍처를 선택할 수 있습니다. Unity는 적절한 파일 형식을 자동으로 선택합니다.
C#에서 플러그인 호출하기
플러그인은 다음과 같이 C# 스크립트에서 호출할 수 있습니다:
[DllImport("PluginName")]
private static extern float ExamplePluginFunction();
PluginName은 파일의 확장자를 포함하지 않아야 합니다.
플러그인 예시
간단한 플러그인
가장 기본적인 플러그인 예시는 숫자를 출력하거나 두 개의 숫자를 더하는 등의 기능을 수행합니다.
네이티브 렌더러 플러그인
이 플러그인은 C++ 코드에서 프로시저 텍스처를 포함하여 렌더링하는 더 복잡한 예제를 포함합니다.
결론
이 문서는 Unity에서 네이티브 플러그인을 사용하는 기본적인 방법을 설명하였습니다. 더욱 자세한 내용은 Unity의 공식 문서를 참고하시기 바랍니다. 플러그인을 활용하여 성능을 극대화하고, 다양한 기능을 구현해 보세요.