플러그인 인스펙터를 사용하여 Unity가 플러그인 파일을 로드하고 참조하는 조건 및 플러그인에 관한 여러 기타 플랫폼별 설정을 지정할 수 있습니다.
프로젝트 창에서 플러그인 파일을 선택하여 플러그인 인스펙터를 확인합니다.
****Auto Reference**** 설정을 통해 플러그인 파일이 프로젝트의 다른 어셈블리와 어셈블리 정의에 의해 참조되는 방식을 제어할 수 있습니다.
****Auto Reference****를 활성화하면(기본적으로 선택되어 있음) 모든 사전 정의된 어셈블리와 어셈블리 정의가 자동으로 플러그인 파일을 참조합니다. 플러그인에 대한 레퍼런스를 명시적으로 선언하려면 ****Auto Reference****를 비활성화하십시오.
어셈블리 정의 인스펙터 창에서 어셈블리 정의를 위한 플러그인 파일 레퍼런스를 선언할 수 있습니다. 자세한 내용은 스크립트 컴파일 및 어셈블리 정의 파일을 참조하십시오.
****Auto Reference****를 비활성화하면 Unity가 프로젝트를 위해 생성한 미리 정의된 어셈블리의 플러그인을 참조할 수 없습니다. 이러한 미리 정의된 어셈블리는 어셈블리 정의 파일을 사용하여 다른 어셈블리에 할당하지 않은 프로젝트의 모든 스크립트를 포함합니다. 어셈블리 정의 파일을 사용하여 생성된 어셈블리에 포함된 코드만이 Auto Reference 프로퍼티가 비활성화된 플러그인의 클래스, 함수 또는 기타 리소스를 참조할 수 있습니다.
****Auto Reference**** 옵션은 파일이 빌드에 포함되는지 여부에 영향을 주지 않습니다. ****Auto Reference**** 옵션을 비활성화하면 Unity는 컴파일 동안 파일을 자동으로 참조하지 않습니다. 플러그인의 빌드 설정을 조정하려면 플랫폼 설정을 사용하십시오.
플러그인에 대한 모든 레퍼런스를 명시적으로 선언하여 플러그인이 참조될 수 있는 범위를 제한하려면 Auto Reference를 비활성화하십시오. 예를 들어, 프로젝트의 스크립트 세트 1개만이 플러그인을 사용하는 경우 이러한 스크립트를 위한 어셈블리 정의 파일을 생성하고 플러그인에 대한 명시적인 레퍼런스를 만들 수 있습니다. 그러면 프로젝트 전체에서 플러그인이 더 이상 자동으로 참조되지 않으므로 프로젝트의 다른 스크립트가 플러그인을 잘못 사용하는 일이 방지됩니다. 물론 두 개 이상의 어셈블리가 플러그인을 사용할 수 있지만, 모든 어셈블리는 종속성을 명시적으로 선언해야 합니다. 또한 플러그인을 변경하는 경우, 전체 프로젝트가 아닌 종속된 어셈블리만 다시 컴파일해야 합니다.
또한 에셋 스토어 패키지에서 사용되는 플러그인이 패키지가 임포트되는 프로젝트의 다른 코드와 충돌하지 않도록 플러그인에 대한 명시적인 레퍼런스를 사용할 수 있습니다.
Select platforms for plugin 설정을 사용하면 플러그인 파일이 호환되며 사용되어야 할 플랫폼을 지정할 수 있습니다. 플랫폼 리스트에는 에디터 자체(플레이 모드 및 편집 시점에 실행되는 모든 스크립트), 스탠드얼론 및 Unity 빌드 지원을 설치한 플랫폼(예: Android, iOS, WebGL)이 포함됩니다.
Any Platform을 선택하고, 원하는 경우 개별 플랫폼을 제외할 수도 있습니다. 또는 Any Platform을 선택 해제하고 원하는 경우 개별 플랫폼을 포함할 수 있습니다.
플랫폼을 선택했다면 아래에 있는 별도의 Platform Settings 섹션에서 CPU 타입이나 특정 OS와 같은 추가 옵션을 지정할 수 있습니다. 이 인스펙터 창 영역에는 선택한 플랫폼 각각에 대한 탭이 있습니다. 일부 플랫폼에서는 설정이 불가능하거나 CPU와 OS 선택과 같은 일부 설정만 가능합니다.
가능한 경우 인스펙터는 특정 플랫폼의 플러그인 타입에 해당하는 설정만 표시합니다. 예를 들어 Windows에서만 사용할 수 있는 확장자가 .dll인 네이티브 플러그인 파일의 경우 인스펙터는 Windows에 해당하는 옵션만 표시합니다.
참고: 네이티브 플러그인은 언로드될 수 없습니다. 에디터가 이미 플러그인을 로드했다면 같은 에디터 세션에서 해당 플러그인의 설정을 변경한 후에도 로드된 상태로 유지됩니다. 플러그인을 언로드하려면 Unity를 다시 시작해야 합니다.
에디터 플랫폼 설정을 사용하여 플러그인이 호환되는 CPU 아키텍처와 운영체제를 지정할 수 있습니다.
대다수의 관리되는 플러그인은 모든 CPU 및 OS와 호환됩니다. 단, 네이티브 플러그인은 보통 하나의 OS와만 호환되며, 컴파일 방식에 따라 하나의 CPU 아키텍처와만 호환될 수도 있습니다.
예를 들어 CPU X86을 선택하면 Unity가 이전의 32비트 에디터 버전을 실행하는 경우 플러그인을 로드하지만, 64비트 버전을 실행하는 경우에는 플러그인을 로드하지 않습니다.
마찬가지로 OS Windows를 선택하면 Unity는 Windows 시스템에서 에디터를 실행할 때는 플러그인을 로드하지만, OS X나 Linux 시스템에서는 로드하지 않습니다.
스탠드얼론 플랫폼, Windows, OS X와 Linux의 경우 라이브러리가 호환되는 CPU 아키텍처를 선택할 수 있습니다. 관리되는 라이브러리는 보통 특정한 시스템 API에 액세스하는 경우를 제외하고 모든 OS 및 아키텍처와 호환됩니다. 네이티브 라이브러리는 하나의 OS와만 호환되지만, 아키텍처의 경우 32비트 아키텍처, 64비트 아키텍처 또는 두 CPU 아키텍처 모두와 호환됩니다.
스탠드얼론 플랫폼의 플레이어 설정도 참조하십시오.
유니버설 Windows 플랫폼 플러그인 설정은 해당 섹션에서 설명됩니다. 자세한 내용은 유니버설 Windows 플랫폼: IL2CPP 스크립팅 백엔드의 플러그인을 참조하십시오.
Android와 호환될 가능성이 있는 플러그인 파일의 경우 CPU 아키텍처를 선택할 수 있습니다. 선택한 아키텍처는 라이브러리가 컴파일된 아키텍처와 일치해야 합니다. Unity는 올바른 설정을 선택했는지 여부를 확인하지 않습니다.
iOS 및 tvOS 설정을 통해 플러그인이 의존하는 iOS 프레임워크를 지정할 수 있습니다.
동적으로 로드된 라이브러리 및 동적으로 로드된 라이브러리나 런타임 시 로드해야 하는 에셋과 리소스를 포함하는 번들과 프레임워크의 경우 Add to Embedded Binaries 옵션을 선택하십시오. 이 옵션을 선택하면 Unity는 플러그인 파일을 최종 애플리케이션 패키지로 복사하도록 Xcode 프로젝트 옵션을 설정합니다.
빌드의 일부분으로 컴파일해야 하는 플러그인 소스 코드 파일의 경우 Compile Flags 필드에서 컴파일 시 필요한 모든 플래그를 지정할 수 있습니다.
****Define Constraints**** 설정을 통해 플러그인 파일이 사용되기 위해 필수적으로 정의되거나 정의되지 않아야 하는 기호를 지정할 수 있습니다.
Unity는 모든 ****Define Constraints****가 충족되어야만 플러그인을 로드하고 참조합니다. 제약은 C#의 #if
전처리기 지시어처럼 작동하되, 스크립트 레벨이 아닌 어셈블리 레벨에서 작동합니다. ****Define Constraints**** 설정의 모든 기호를 정의해야 제약이 충족됩니다. 취소를 의미하는 !
(느낌표) 기호를 앞부분에 붙여 기호가 정의되지 않아야 한다고 지정할 수도 있습니다. 다음 기호를 ****Define Constraints****로 지정하는 예시를 살펴보겠습니다.
여기에서는 기호 ENABLE_IL2CPP
가 지정되지 않고 기호 UNITY_2018_3_OR_NEWER
가 지정되는 경우 제약이 충족됩니다. 즉, 이 어셈블리는 Unity 2018.3 이상을 위한 비 IL2CPP 스크립팅 런타임에서만 로드 및 참조됩니다.
Unity의 빌트인 정의 기호를 사용하거나, 프로젝트의 Scripting Define Symbols 플레이어 설정에 정의된 모든 기호를 사용할 수 있습니다. 빌트인 기호의 리스트를 비롯한 자세한 내용은 플랫폼별 컴파일을 참조하십시오. Scripting Define Symbols 설정은 플랫폼별로 다릅니다. 반드시 해당하는 모든 플랫폼에서 필수 기호를 정의하십시오.
Unity는 Assets 폴더 내 파일의 확장자에 기반하여 해당 파일이 플러그인인지 여부를 감지합니다. 확장자가 다음과 같은 파일은 플러그인으로 처리됩니다.
Unity는 특정한 폴더를 번들 플러그인으로 취급합니다. Unity는 이러한 폴더 내에서 추가 플러그인 파일을 검색하지 않으므로, 폴더 내의 모든 파일이 단일 플러그인으로 간주됩니다. Unity는 폴더에 다음 확장자 중 하나가 있는 경우 폴더가 번들 플러그인인지 여부를 감지합니다.
마지막으로 Unity는 정확하게 Assets/Plugins/Android/ 에 해당하는 부모 경로의 모든 폴더를 Android 라이브러리 플러그인 폴더로 간주하며, .plugin, .bundle, .framework 확장자가 있는 폴더와 같이 취급합니다.
Unity는 플러그인이 있는 폴더에 따라 플러그인 파일의 임포트 설정 기본값을 설정합니다.
Folder | 디폴트 설정 |
---|---|
Assets/../Editor | 에디터에만 호환되는 플러그인으로 설정될 것이며 플랫폼을 빌드할 때 사용되지 않습니다. |
Assets/\../Editor/(x86 또는 x86_64 또는 x64) | 에디터에만 호환되는 플러그인으로 설정될 것이며 하위 폴더에 따라 CPU 값이 할당됩니다. |
Assets/../Plugins/(x86_64 또는 x64) | x64 스탠드얼론 플러그인은 호환 가능으로 설정됩니다. |
Assets/\../Plugins/x86 | x86 스탠드얼론 플러그인은 호환 가능으로 설정됩니다. |
Assets/Plugins/iOS | iOS에만 호환되는 플러그인으로 설정됩니다. |
Assets/Plugins/WSA/(x86 또는 ARM) | 유니버설 Windows 플랫폼에만 호환되는 플러그인으로 설정될 것이며 CPU 하위 폴더가 있다면 CPU 값 또한 설정됩니다. WSA 대신 메트로 키워드를 사용할 수 있습니다. |
Assets/Plugins/WSA/(SDK80 또는 SDK81 또는 PhoneSDK81) | 위와 마찬가지로 SDK 값이 추가적으로 설정되며 그 후에 CPU 하위 폴더를 추가할 수 있습니다. 호환성 문제 때문에 SDK81 - Win81, PhoneSDK81 - WindowsPhone81는 동일하게 취급됩니다. |
Assets/Plugins/Tizen | Tizen에만 호환되는 플러그인으로 설정됩니다. |
Assets/Plugins/PS4 | Playstation 4에만 호환되는 플러그인으로 설정됩니다. |