범위 지정 레지스트리를 통해 Unity는 커스텀 패키지 레지스트리 서버의 위치를 패키지 관리자에 전달하여 사용자가 동시에 여러 패키지 컬렉션에 액세스하도록 지원합니다. 이 기능을 이해하는 데 도움이 되는 몇 가지 중요한 개념은 다음과 같습니다.
개념: | 설명: |
---|---|
패키지 레지스트리 서버 | 패키지를 추적하고 저장할 장소를 제공하는 애플리케이션입니다. Unity의 Package Manager 창에서 Unity 레지스트리 컨텍스트를 선택하면 Unity의 레지스트리에 등록된 모든 패키지가 리스트 뷰에 나타납니다. |
패키지 관리자 | 사용 가능한 항목을 사용자에게 알리고, 사용자가 프로젝트에 대해 요청하는 모든 패키지를 다운로드하고 설치하는 애플리케이션입니다. Unity는 자체 버전의 패키지 관리자를 구현했지만, 다른 조직에도 유사한 여러 애플리케이션이 있습니다. |
범위 |
com.example.mycompany.animation 또는 com.example 등을 비롯한 패키지 이름 또는 네임스페이스(역 도메인 포맷)를 정의합니다. 사용자가 패키지를 요청하면 패키지 관리자는 해당 범위와 가장 일치하는 패키지를 레지스트리에서 페치합니다. 자세한 내용은 아래의 프로젝트의 범위 지정 레지스트리 관리를 참조하십시오. |
패키지 공급자는 커스텀 레지스트리 서버를 설정하여 Unity 레지스트리 외에도 커스텀 패키지를 호스팅하고 배포합니다. 패키지 소비자는 커스텀 패키지 공급자의 레지스트리 서버에 액세스하기 위해 각 프로젝트의 범위 지정 레지스트리를 설정합니다.
참고: 패키지 공급자는 설정한 모든 패키지 레지스트리 서버가 Unity 서비스 약관, 특히 Unity 패키지 안내 원칙 및 가이드라인을 준수하는지 확인해야 합니다. Unity는 지식과 창작물을 손쉽게 공유할 수 있도록 패키지 관리자에 대한 액세스 권한을 제공하지만, 타사 제품을 위한 마켓플레이스 역할은 하지 않습니다.
범위 지정 레지스트리는 다음에 도움이 됩니다.
툴, 라이브러리 및 기타 에셋을 배포하여 새로운 기능을 제공합니다.
공급자는 자체 레지스트리를 생성하고 패키지의 완성도를 나타내는 버전 숫자를 사용하거나 유의적 버전(업데이트가 중대한 API 변경 또는 사소한 수정 사항을 도입하는지 여부)을 사용하여 툴과 스크립트(또는 기타 타입의 에셋)를 배포합니다. 또한 패키지 관리자가 패키지 종속성을 지원하므로 코드가 다른 패키지의 코드에 종속될 수 있습니다.
소비자는 패키지 관리자에서 타사 커스텀 패키지를 탐색하고 설치할 수 있으며, 이러한 경험은 Unity의 패키지와 동일합니다.
Unity의 기존 패키지 기능 확장.
소비자는 레지스트리를 수동으로 전환하거나 다른 패키지 버전을 명시적으로 설치하지 않고도, 커스텀 패키지가 Unity 패키지를 오버라이드하는 원활한 환경을 이용할 수 있습니다. 이는 패키지를 특정 레지스트리에 매핑하여, 패키지 관리자가 Unity 레지스트리 또는 커스텀 패키지 레지스트리 서버에서 페치할 수 있도록 지원하기 때문입니다.
폐쇄된 네트워크 환경의 패키지 액세스.
일부 조직은 폐쇄된 네트워크 내부에서 작업하기 때문에 Unity의 자체 패키지 레지스트리에 액세스하기 어렵습니다. 이러한 경우 조직은 폐쇄된 네트워크 내부의 서버에 자체 패키지 레지스트리를 설정할 수 있습니다. 그런 다음 네트워크 관리자는 주기적으로 Unity의 패키지 레지스트리와 동기화하여 범위 지정 레지스트리에 사용 가능한 최신 패키지 집합이 있는지 확인할 수 있습니다.
패키지 소비자인 경우 프로젝트의 범위 지정 레지스트리 관리를 참조하여 Unity 프로젝트의 기존 커스텀 패키지 레지스트리 서버에 연결하는 방법을 알아보십시오. 패키지 제작자인 경우 패키지 공유를 참조하여 지원되는 패키지 레지스트리 서버, 그리고 이를 범위 지정 레지스트리에서 사용하도록 설정하는 방법에 대한 정보 링크를 확인하십시오.
참고: 액세스가 제한된 패키지 레지스트리 서버를 가리키는 범위 지정 레지스트리를 설정하는 경우 npm 인증 토큰을 서버에 전달하도록 패키지 관리자를 설정할 수 있습니다. 자세한 내용은 범위 지정 레지스트리 인증을 참조하십시오.
공유 프로젝트에서 작업 중이고 다른 사용자가 범위 지정 레지스트리를 프로젝트에 추가하는 경우 Unity는 새로운 범위 지정 레지스트리가 추가되었다는 경고를 표시합니다.
Close 버튼을 클릭하면 패키지 관리자 프로젝트 설정 창이 나타납니다. 여기에서 프로젝트의 범위 지정 레지스트리를 추가, 수정 또는 제거할 수 있습니다.
대신에 Read more 버튼을 클릭하면 기본 웹 브라우저에서 이 페이지가 열립니다.
팁: 언제든 패키지 관리자 프로젝트 설정 창에 액세스하려면 Unity의 메인 메뉴(메뉴: Edit > Project Settings, Package Manager 카테고리)를 사용하거나 패키지 관리자 창의 고급 설정 드롭다운 메뉴에서 Advanced Project Settings 를 선택합니다.
프로젝트에서 범위 지정 패키지 레지스트리를 관리하려면 프로젝트 매니페스트 파일을 직접 편집하거나 패키지 관리자 프로젝트 설정 창을 사용하여 Unity가 매니페스트를 자동으로 수정하도록 설정하십시오.
프로젝트 매니페스트는 범위 지정 레지스트리 설정 오브젝트의 배열이 들어 있는 scopedRegistries 프로퍼티를 사용합니다. 각 오브젝트에는 다음의 프로퍼티가 포함되어 있습니다.
프로퍼티 | JSON 타입 | 설명 |
---|---|---|
name | String | 사용자 인터페이스에 표시되는 범위 이름입니다. Package Manager 창의 패키지 세부 정보 뷰에 이 이름이 표시됩니다. 예: "name": "Tools"
|
url | String | npm 호환 레지스트리 서버의 URL입니다. 예: "url": "https://mycompany.example.com/tools-registry" 참고: 모든 레지스트리 공급자가 Unity의 패키지 관리자와 호환되는 것은 아닙니다. 추가하려는 패키지 레지스트리 서버가 /-/v1/search 또는 /-/all 엔드포인트를 구현하는지 확인하십시오. |
scopes | 문자열 배열 | 패키지 이름과 정확히 일치하는 항목 또는 네임스페이스로 패키지 이름에 매핑할 수 있는 범위 배열입니다. 와일드카드와 기타 glob 패턴은 지원되지 않습니다. 예: "scopes": [ "com.example", "com.example.tools.physics" ] 참고: 이 타입의 설정은 패키지가 역순 도메인 이름 표기법을 준수한다고 가정합니다. 따라서 com.unity 는 com.unity 네임스페이스와 일치하는 모든 패키지 이름(예: com.unity.timeline 또는 com.unity.2d.animation )과 동일하게 간주됩니다.경고: Unity는 npm의 범위 표기법을 지원하지 않습니다. |
패키지 관리자는 패키지를 페치할 레지스트리를 결정할 때 패키지 이름을 범위 값과 비교한 후 범위가 가장 가깝게 일치하는 레지스트리를 찾습니다.
예를 들어 아래의 프로젝트 매니페스트에는 두 개의 범위 지정 레지스트리, 즉 “General”과 “Tools”가 있습니다.
{
"scopedRegistries": [
{
"name": "General",
"url": "https://example.com/registry",
"scopes": [
"com.example", "com.example.tools.physics"
]
},
{
"name": "Tools",
"url": "https://mycompany.example.com/tools-registry",
"scopes": [
"com.example.mycompany.tools"
]
}
],
"dependencies": {
"com.unity.animation": "1.0.0",
"com.example.mycompany.tools.animation": "1.0.0",
"com.example.tools.physics": "1.0.0",
"com.example.animation": "1.0.0"
}
}
패키지 관리자는 com.example.animation
패키지를 조회할 때 com.example
네임스페이스가 해당 이름과 가장 일치하는지 확인한 후 \ "General " 레지스트리에서 해당 패키지를 페치합니다.
패키지 관리자가 com.example.tools.physics
패키지를 검색할 때 “General” 레지스트리에는 패키지 이름과 정확히 일치하는 범위가 있습니다.
패키지 관리자는 com.example.mycompany.tools.animation
패키지를 조회할 때 com.example.mycompany.tools
네임스페이스가 해당 이름과 가장 일치하는지 확인한 후 “Tools” 레지스트리에서 패키지를 페치합니다. “General” 범위와 일치하더라도 com.example
네임스페이스는 가까운 매치가 아닙니다.
패키지 관리자는 com.unity.animation
패키지를 조회할 때 범위 지정 레지스트리에서 일치하는 항목을 찾지 않으며, 기본 레지스트리에서 패키지를 페치합니다.