Version: Unity 6.0 (6000.0)
언어 : 한국어
타사 코드 라이브러리 통합(플러그인)
관리되는 플러그인

플러그인 임포트 및 설정

관리되는 플러그인이나 네이티브 플러그인이 있는 경우 Unity로 임포트한 후 설정할 수 있습니다. 에디터 내에서 플러그인은 스크립트와 유사하게 에셋으로 취급되며 인스펙터 창에서 설정할 수 있습니다.

플러그인 설정을 사용하여 플랫폼 종류와 플랫폼 구성, 조건을 포함하여 플러그인이 실행되는 위치를 지정할 수 있습니다.

플러그인 임포트

프로젝트에 플러그인을 임포트하는 가장 간단한 방법은 플러그인을 클릭한 후 Assets 폴더 또는 그 하위 폴더 중 하나로 드래그하는 것입니다. Unity는 특정 파일 및 폴더 유형을 플러그인으로 인식합니다. 또한 플러그인의 의도된 플랫폼과 일치하는 기본 설정을 적용할 수도 있습니다.

지원되는 플러그인 파일 및 폴더 유형

Unity는 다음의 확장자를 가진 파일을 플러그인으로 취급합니다.

  • a
  • .aar
  • .bc
  • .c
  • .cc
  • .cpp
  • .dll
  • .def
  • .dylib
  • .h
  • .jar
  • .jslib
  • .jspre
  • .m
  • .mm
  • .prx
  • .rpl
  • .so
  • .sprx
  • .suprx
  • .swift
  • .winmd
  • .xex
  • .xib

또한 Unity는 특정 폴더를 번들 플러그인으로 취급합니다. Unity는 이러한 폴더 안에서 추가 플러그인 파일을 찾지 않으므로 폴더 내 모든 파일은 단일 플러그인으로 간주됩니다. Unity는 다음의 확장자를 가진 폴더를 번들 플러그인으로 취급합니다.

  • .androidlib
  • .bundle
  • .framework
  • .plugin

플러그인 기본 설정

Unity는 Assets 폴더에 있는 플러그인의 경로가 플랫폼별 패턴과 일치하는 경우 플러그인에 플랫폼별 기본 설정을 자동으로 적용합니다. 해당 경로와 맞는 패턴이 없는 경우 Unity는 에디터 플랫폼 기본 설정을 플러그인에 적용합니다.

다음 표는 Unity가 인식하는 경로 패턴을 보여 줍니다. 괄호 안에 표시되는 경로의 일부는 선택 사항입니다. 경로에 이중 점이 포함된 경우 더 많은 폴더가 포함된 것일 수 있습니다.

폴더 경로 패턴 기본 설정
Assets/../Editor/(x86 또는 x86_64 또는 x64) 플랫폼: 에디터 전용

CPU(선택 사항): 하위 폴더에 기반(있는 경우)
Assets/../Plugins/(x86_64 또는 x86 또는 x64) 플랫폼: Windows, Linux, macOS

CPU(선택 사항): 하위 폴더에 기반(있는 경우)
Assets/Plugins/iOS 플랫폼: iOS
Assets/Plugins/WSA/(SDK80 또는 SDK81 또는 PhoneSDK81)/(x86 또는 ARM) 플랫폼: 유니버설 Windows 플랫폼

SDK(선택 사항): 하위 폴더에 기반(있는 경우) 호환성 관련 이유로 SDK81은 Win81, PhoneSDK81는 WindowsPhone81입니다.

CPU(선택 사항): 하위 폴더에 기반(있는 경우)

참고: 키워드 MetroWSA 대신 사용할 수 있습니다.

플러그인 설정 변경

Unity에서 플러그인은 관리되는 플러그인 또는 네이티브 플러그인입니다. 다음 표에 플러그인의 각 유형과 관련한 설정이 표시되어 있습니다.

|설정 |관리되는 플러그인|Native | |:—|:—|:—| |플러그인을 위한 플랫폼 선택|x|x |플랫폼 설정|x|x| |Asset Labels|x|x| |에셋 번들|x|x| |General|x| | |Define Constraints|x| | |Plugin load settings| |x|

인스펙터 에서 플러그인 설정을 보고 변경하려면 프로젝트 창에서 플러그인 파일을 선택합니다.

관리되는 플러그인(왼쪽)과 네이티브 플러그인(오른쪽) 설정
관리되는 플러그인(왼쪽)과 네이티브 플러그인(오른쪽) 설정

플러그인 설정 변경

Select platform for pluginPlatform settings는 Unity가 플러그인을 포함하는 빌드를 지정합니다.

다음 표는 공통 설정에 대한 설명입니다.

설정 옵션 참고
플러그인을 위한 플랫폼 선택 에디터: 플레이 모드와 편집 시 실행되는 스크립트의 경우
스탠드얼론: Windows, Linux, macOS
• Unity 설치에 포함된 모든 플랫폼(예: Android, iOS, 웹)
플러그인이 아직 Unity에 포함되지 않은 플랫폼에서 작동하도록 하려면 Any Platform 을 선택하십시오. 지원하지 않는 경우 개별 플랫폼을 제외할 수 있습니다.

플러그인을 임포트하면 Unity가 메모리에 로드합니다. 네이티브 플러그인은 언로드할 수 없으며 설정을 변경한 후에도 Unity 세션에서 로드된 상태로 유지됩니다. 플러그인을 언로드하려면 Unity를 다시 시작해야 합니다.
플랫폼 설정 선택한 각 플랫폼에 대해 CPU 아키텍처 및 종속성과 같은 추가 조건을 지정할 수 있습니다. Unity는 플랫폼과 가능한 경우 해당 플랫폼의 특정 플러그인 유형에 적용되는 설정을 표시합니다. 예를 들어 확장자가 .dll인 네이티브 플러그인 파일은 Windows에서만 실행할 수 있으므로 Unity는 Windows 설정만 표시합니다.
에디터 • CPU 아키텍처
• OS
대부분의 관리되는 플러그인은 모든 CPU 및 OS와 호환됩니다.

대부분의 네이티브 플러그인은 하나의 OS와만 호환되며 컴파일 방식에 따라 하나의 CPU 아키텍처와만 호환될 수도 있습니다.
Windows, Linux, macOS • CPU 아키텍처
• OS
관리되는 라이브러리는 일반적으로 특정 시스템 API에 액세스하지 않는 한 모든 OS 및 CPU 아키텍처와 호환됩니다.

네이티브 라이브러리는 단일 OS와만 호환되지만, 32비트, 64비트 또는 두 CPU 아키텍처 모두와 호환될 수 있습니다.
유니버설 Windows 플랫폼 유니버설 Windows 플랫폼: IL2CPP 스크립팅 백엔드 플러그인을 참조하십시오.
Android CPU 아키텍처 CPU 아키텍처는 라이브러리가 컴파일된 아키텍처와 일치해야 합니다. Unity는 해당 설정을 확인하지 않습니다.

참고 항목: AAR 플러그인과 Android 라이브러리.
iOS와 tvOS • 프레임워크 종속성
• CPU 아키텍처
• 임베디드 바이너리에 추가
• 플래그 컴파일
플러그인이 호환되는 CPU 아키텍처를 지정합니다. Unity는 ARM64 및 X64 시뮬레이터 아키텍처를 테스트 목적으로 제공합니다.

Add to Embedded Binaries 옵션을 선택하면 Unity가 플러그인 파일을 최종 애플리케이션 패키지로 복사할 Xcode 프로젝트 옵션을 설정합니다. 이 작업을 수행하는 목적은 다음과 같습니다.
• 동적으로 로드된 라이브러리
• 동적으로 로드된 라이브러리가 포함된 번들과 프레임워크
• 런타임 시 로드해야 하는 모든 에셋 및 리소스

Compile Flags 필드에서 Unity가 빌드의 일부로 컴파일해야 하는 플러그인 소스 코드 파일의 컴파일 플래그를 설정합니다.

: 그 외 공통 설정에 관한 내용은 에셋 번들에디터에서 검색을 참조하십시오.

관리되는 플러그인 설정

관리되는 플러그인은 프로젝트에 포함하고자하는 타사 라이브러리이거나 사용자가 컴파일한 어셈블리일 수 있습니다.

일반 - 자동 레퍼런스

Auto Reference 설정을 통해 플러그인 파일이 프로젝트의 다른 어셈블리 정의에 의해 참조되는 방식을 제어할 수 있습니다. Auto Reference를 활성화하면 사전 정의된 모든 어셈블리와 어셈블리 정의가 플러그인 파일을 자동으로 참조합니다.

Auto Reference는 기본적으로 활성화되어 있습니다.

플러그인을 참조할 수 있는 범위를 제한하려면 Auto Reference를 비활성화합니다. 그런 다음 해당 플러그인에 대한 모든 레퍼런스를 명시적으로 선언해야 합니다. 다음과 같은 경우에 이 작업을 수행할 수 있습니다.

  • 스크립트가 플러그인을 잘못 사용하는 일을 방지하고자 하는 경우
  • 플러그인을 반복하며 컴파일 시간을 단축하고자 하는 경우. 플러그인을 명시적으로 선언하면 Unity는 전체 프로젝트가 아닌 종속 어셈블리만 다시 컴파일합니다.
  • 에셋 스토어 패키지에서 사용되는 플러그인이 패키지가 임포트되는 프로젝트의 다른 코드와 충돌하지 않도록 하려는 경우

Auto Reference를 비활성화하면 Unity가 프로젝트에 대해 생성하는 사전 정의된 어셈블리에서 플러그인을 참조할 수 없습니다. 이러한 사전 정의된 어셈블리는 어셈블리 정의 파일을 사용하여 다른 어셈블리에 할당하지 않은 프로젝트의 모든 스크립트를 포함합니다. Auto Reference 프로퍼티가 비활성화된 플러그인에서 클래스, 함수 또는 기타 리소스를 참조하려면 참조 코드가 어셈블리 정의 파일로 생성된 어셈블리에 있어야 합니다. 예를 들어 프로젝트의 스크립트 세트가 플러그인을 사용하는 경우 해당 스크립트에 대한 어셈블리 정의 파일을 생성하고 정의 파일에 플러그인에 대한 명시적 레퍼런스를 추가해야 합니다.

두 개 이상의 어셈블리가 플러그인을 사용할 수 있지만, 모든 어셈블리는 종속성을 명시적으로 선언해야 합니다. Unity의 어셈블리 정의에 대해 자세히 알아보려면 어셈블리 정의를 참조하십시오.

참고: Auto Reference 옵션은 파일이 빌드에 포함되는지 여부에 영향을 미치지 않습니다. 플러그인의 빌드 설정을 제어하려면 플랫폼 설정을 사용합니다.

일반 - 확인 레퍼런스

Unity는 플러그인의 레퍼런스를 프로젝트에서 사용할 수 있는지 확인할 수 있습니다. 이 확인을 수행하지 않으면 애플리케이션이 누락된 레퍼런스를 사용하려고 할 때 사용자에게 런타임 오류가 발생할 수 있습니다.

Validate References 옵션을 활성화하여 다음을 확인합니다.

  • 플러그인의 레퍼런스 존재 여부. 예를 들어 플러그인이 플러그인 Newtonsoft.Json.dll을 참조하고 Unity가 Newtonsoft.Json.dll을 찾을 수 없는 경우 오류가 표시됩니다.
  • 강력한 명명 레퍼런스를 로드할 수 있는지 여부. 강력한 이름의 레퍼런스가 버전과 일치해야 하므로 중요합니다. 예를 들어 ‘b.dll’ 버전 2.0.0에 대한 레퍼런스로 플러그인을 컴파일하는 경우 해당 버전이 프로젝트에 있어야 합니다.

강력한 이름의 레퍼런스를 확인하지는 않지만 여전히 해당 레퍼런스가 존재하는지는 확인하려는 경우는 다음 단계를 따르십시오.

  1. Plugin 인스펙터에서 Validate References를 활성화합니다.
  2. Project Settings > Player > Other Settings에서 Assembly Version Validation을 비활성화합니다.

Define Constraints

Unity가 플러그인을 메모리에 로드하고 참조하는 조건을 지정할 수 있습니다. 이러한 조건은 충족되어야 하는 심볼로, 정의되었거나 정의되지 않았음을 의미합니다.

제약은 C#의 #if 프리 프로세서 지시문처럼 작동하지만 스크립트 레벨이 아닌 어셈블리 레벨에서 작동합니다. 제약에 대한 자세한 내용은 Assembly Definition 프로퍼티에서 확인할 수 있습니다.

Unity의 빌트인 정의 심볼을 사용하거나, Project Settings > Player > Other Settings > Script Compilation > Scripting Define Symbols에서 심볼을 추가할 수 있습니다. 추가하는 심볼은 플랫폼별로 다르므로 관련 플랫폼별로 정의해야 합니다. 빌트인 심볼 목록을 비롯한 자세한 내용은 플랫폼별 컴파일을 참조하십시오.

: 반드시 심볼이 정의되지 않도록 지정하려면 부정을 나타내는 !(느낌표) 심볼을 접두사로 사용하십시오.

다음 예시에서는 Unity가 Unity 2018.3 이상의 버전에 대해 비__ IL2CPP__Unity에서 개발한 스크립팅 백엔드로, 여러 플랫폼용 프로젝트를 빌드할 때 Mono 대신 사용할 수 있습니다. 자세한 정보
See in Glossary
스크립팅 런타임에만 플러그인을 로드하고 참조하도록 합니다. 다음과 같이 두 가지 제약을 정의하며 이 둘은 반드시 충족되어야 합니다.

  • ENABLE_IL2CPP가 정의되어 있지 않음
  • UNITY_2018_3_OR_NEWER가 정의됨
특정 런타임과 Unity 버전을 위한 제약 정의
특정 런타임과 Unity 버전을 위한 제약 정의

플러그인 로드 설정 - 시작 시 로드

그래픽스 초기화, 스크립트, 에셋 로딩, 씬 등과 독립적인 네이티브 코드를 실행할 수 있습니다. 이는 플레이어가 네이티브 플러그인을 로드하는 기본 방식과 다릅니다. 이는 플러그인의 함수 중 하나를 처음 호출할 때까지 기다리는 방식으로, 보통 스크립트가 수행합니다.

애플리케이션이 스크립트를 실행하기 전에 플러그인을 로드하려면 다음 단계를 따르십시오.

  1. 플러그인에서 UnityPluginLoad를 구현합니다. 로우레벨 네이티브 플러그인 인터페이스를 참조하십시오.
  2. 에디터에서 Plugin load settings > Load on startup을 선택합니다.

: 플러그인 함수를 호출하는 C# 스크립트의 예시는 매뉴얼: 네이티브 플러그인을 참조하십시오.

추가 리소스

타사 코드 라이브러리 통합(플러그인)
관리되는 플러그인