UnityPlayerActivity Java 코드의 확장
Using Java or Kotlin source files as plug-ins

Android용 Native(C++) 플러그인

Unity는 C/C++로 작성되고 공유 라이브러리(.so) 또는 정적 라이브러리(.a)로 패키지화된 Android용 네이티브 플러그인을 지원합니다. IL2CPP 스크립팅 백엔드를 사용하는 경우 C/C++ 소스 파일을 플러그인으로 사용하면 IL2CPP 생성 파일과 함께 컴파일됩니다. 여기에는 확장자가 .c, .cc, .cpp 및 .h인 모든 C/C++ 소스 파일이 포함됩니다.

Android용 C++ 플러그인을 빌드하려면 Android NDK를 사용하고 공유 라이브러리 빌드를 위해 필요한 단계에 익숙해져야 합니다. 이는 정적 라이브러리의 경우도 마찬가지입니다.

C++를 사용하여 플러그인을 구현하는 경우 이름 맹글링 문제를 피하기 위해 C 링크로 메서드를 선언해야 합니다. 기본적으로 플러그인에서 .c 파일 확장자가 있는 C 소스 파일만 C 링크를 갖습니다(C++는 해당 안 됨).

extern "C" {
  float Foopluginmethod ();
}

라이브러리를 빌드한 후 출력 .so 파일을 Unity 프로젝트의 Assets/Plugins/Android 디렉토리에 복사합니다. 인스펙터에서 .so 파일을 Android와 호환되도록 표시하고 드롭다운 상자에 필요한 CPU 아키텍처를 설정합니다.

인스펙터 창에 표시되는 네이티브(C++) 플러그인 임포트 설정
인스펙터 창에 표시되는 네이티브(C++) 플러그인 임포트 설정

C# 스크립트에서 네이티브 플러그인의 메서드를 호출하려면 다음 코드를 사용합니다.

[DllImport ("pluginName")]
private static extern float Foopluginmethod();

참고: pluginName에는 접두어(‘lib’) 또는 파일 이름의 확장자(‘.so’)가 포함되어서는 안됩니다. 모든 네이티브 플러그인 메서드 호출을 추가 C# 코드 레이어로 래핑하는 것이 좋습니다. 이 코드는 Application.platform을 확인하고 앱이 실제 디바이스에서 실행될 때만 네이티브 메서드를 호출합니다. 더미 값은 에디터에서 실행할 때 C# 코드에서 반환됩니다. 플랫폼 정의를 사용하여 플랫폼 종속 코드 컴파일을 제어합니다.

C/C++ 소스 파일을 플러그인으로 사용하면 플러그인 이름에 __Internal을 사용하는 경우를 제외하고 동일한 방식으로 C#에서 호출합니다. 아래의 예제를 참조하십시오.

[DllImport ("__Internal")]
private static extern float Foopluginmethod();

네이티브(C++) 플러그인 예제

zip 아카이브에는 네이티브 코드 플러그인의 간단한 예제가 포함되어 있습니다. 이 샘플은 Unity 애플리케이션에서 C++ 코드가 어떻게 호출되는지 보여줍니다. 패키지는 네이티브 플러그인에 의해 계산된 두 값의 합계를 표시하는 씬을 포함합니다. 플러그인을 컴파일하려면 Android NDK가 필요합니다.



  • 2018–03–10 일부 편집 리뷰를 거쳐 페이지 게시됨

  • Unity 5.5에서 업데이트된 기능

  • 2018.2에서 C++ 소스 파일과 정적 라이브러리를 Android 플러그인으로 사용하기 위한 지원이 추가됨 NewIn20182

UnityPlayerActivity Java 코드의 확장
Using Java or Kotlin source files as plug-ins