데스크톱 플랫폼용 플러그인은 C, C++, Objective C에서 작성할 수 있는 네이티브 코드 라이브러리입니다. 이 페이지에서는 macOS, Windows, Linux용 플러그인에 대해 설명합니다.자세한 내용은 네이티브 플러그인을 참조하십시오.
macOS 플러그인을 번들로 배포하거나 IL2CPP 스크립팅 백엔드를 사용하고 있는 경우 [DllImport("__Internal")]
구문으로 호출할 수 있는 느슨한 C++ 파일을 배포할 수 있습니다.느슨한 C++ 플러그인에 대한 자세한 내용은 IL2CPP용 C++ 소스 코드 플러그인을 참조하십시오.
Xcode를 사용하여 번들 프로젝트를 생성하려면 다음 단계를 따르십시오.
Xcode를 사용한 작업에 대한 자세한 내용은 Apple의 Xcode에 대한 문서를 참조하십시오.
.cpp
) 또는 Objective-C (.mm
)를 사용하여 플러그인을 구현하는 경우 네임 맹글링 문제를 방지하기 위해 C링크에 함수를 선언합니다.extern "C"
{
float ExamplePluginFunction ();
}
IL2CPP를 사용하고 있는 경우 Windows의 플러그인은 익스포트된 함수를 가진 .dll
파일이나 느슨한 C++ 파일입니다..dll
파일을 만들어 플러그인을 생성할 수 있는 대부분의 언어와 개발 환경을 사용할 수 있습니다.네임 맹글링 문제를 방지하기 위해 반드시 C링크에 모든 C++ 함수를 선언해야 합니다.
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에서 플러그인 인스펙터는 플러그인을 관리합니다.플러그인 인스펙터에 액세스하려면 프로젝트 창에서 플러그인 파일을 선택합니다. 스탠드얼론 플랫폼의 경우 라이브러리가 호환되는 CPU 아키텍처를 선택할 수 있습니다.크로스 플랫폼 플러그인의 경우 .bundle
파일(macOS용), .dll
파일(Windows용), .so
파일(Linux용)을 포함해야 합니다.Unity는 타겟 플랫폼에 적합한 플러그인을 자동으로 선택하여 플레이어에 포함합니다.자세한 내용은 플러그인 임포트 및 설정을 참조하십시오.
빌드된 플러그인을 Assets 폴더 또는 Unity 프로젝트에 있는 적절한 아키텍처별 하위 디렉토리에 배치합니다. 그러면 Unity는 C# 스크립트에서 호출할 때 이름으로 플러그인을 찾습니다. 예: [DllImport ("PluginName")] private static extern float ExamplePluginFunction ();
참고: PluginName
은 라이브러리 접두사 또는 파일 확장자를 포함해서는 안 됩니다. 예를 들어 플러그인 파일의 실제 이름은 Windows의 경우 PluginName.dll이고 Linux의 경우 libPluginName.so입니다.
이러한 프로젝트를 다운로드하고 사용하여 Unity에서 플러그인을 구현하는 방법을 배울 수 있습니다.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.