Version: Unity 6.0 (6000.0)
언어 : 한국어
에셋 패키지 캐시 위치 커스터마이즈
Get started with scoped registries

범위 지정 레지스트리

범위 지정 레지스트리를 통해 Unity는 커스텀 패키지 레지스트리 서버의 위치를 ​​패키지 관리자에 전달하여 사용자가 동시에 여러 패키지 컬렉션에 액세스하도록 지원합니다.

이 기능을 이해하는 데 도움이 되는 몇 가지 중요한 개념은 다음과 같습니다.

개념 설명
패키지 레지스트리 서버 패키지를 추적하고 저장할 장소를 제공하는 애플리케이션입니다. Unity의 패키지 관리자 창에서 Unity Registry 컨텍스트를 선택하면 Unity 레지스트리에 등록된 모든 패키지가 리스트 패널에 표시됩니다.
패키지 관리자 사용자에게 어떤 패키지를 사용할 수 있는지 알려 주고 사용자가 프로젝트에 요청한 패키지를 다운로드하고 설치하는 애플리케이션입니다. Unity는 자체 패키지 관리자 버전을 구현했지만, 다른 조직에도 비슷한 애플리케이션이 몇 개 있습니다.
범위 com.example.mycompany.animation 또는 com.example과 같은 패키지 이름 또는 네임스페이스(리버스 도메인 포맷)를 정의합니다. 사용자가 패키지를 요청하면 패키지 관리자는 해당 범위에 가장 적합한 레지스트리에서 패키지를 가져옵니다. 자세한 내용은 프로젝트의 범위 지정 레지스트리 관리를 참조하십시오.


범위 지정 레지스트리와 상호 작용하는 방식은 역할에 따라 다릅니다.

  • 패키지 공급자는 커스텀 레지스트리 서버를 설정하여 Unity 레지스트리 외에 커스텀 패키지를 호스팅하고 배포합니다.
  • 패키지 소비자는 각 프로젝트에 대해 범위 지정 레지스트리를 설정하여 커스텀 패키지 공급자의 레지스트리 서버에 액세스합니다.

범위 지정 레지스트리의 무결성 및 보안

패키지 공급자로서 설정한 모든 패키지 레지스트리 서버가 Unity의 서비스 약관 및 Unity의 패키지 가이드 원리 및 지침을 준수하는지 확인합니다. Unity는 지식과 창작물을 쉽게 공유할 수 있도록 패키지 관리자에 대한 액세스를 제공하지만, 타사 제품의 마켓플레이스는 아닙니다.

패키지 소비자는 범위 지정 레지스트리를 설치할 때 타사 소프트웨어를 설치할 때와 동일한 수준으로 주의해야 합니다.

  • 해당 레지스트리의 패키지에는 실행 코드가 포함될 수 있으므로 신뢰할 수 있는 소스에서만 범위 지정 레지스트리를 설치하십시오.
  • 타사 레지스트리가 유해하거나 적절한 제어 없이 데이터를 캡처할 수 있으므로 주의하십시오. Unity로 자신을 사칭하거나 Unity가 승인하거나 지원하는 타사도 주의하십시오.

범위 지정 레지스트리의 이점

범위 지정 레지스트리는 다음과 같이 도움이 될 수 있습니다.

  • 툴, 라이브러리 및 기타 에셋을 배포하여 새로운 기능을 제공합니다.

    공급자로서 자체 레지스트리를 생성하여 패키지의 안정성을 나타내는 버전 번호로 툴과 스크립트(또는 기타 유형의 에셋)를 배포할 수 있습니다. 버전 번호는 또한 업데이트로 인해 유의적 버전을 기반으로 중대한 API 변경 또는 사소한 수정 사항이 발생하는지 여부를 나타냅니다. 패키지 관리자가 패키지 종속성을 지원하기 때문에 코드가 다른 패키지의 코드에 종속될 수 있습니다.

    소비자가 패키지 관리자에서 타사 커스텀 패키지를 탐색하고 설치하는 경험은 Unity의 패키지를 탐색하는 것과 동일합니다.

  • Unity의 기존 패키지 기능을 확장합니다.

    소비자는 레지스트리를 수동으로 변경하거나 다른 패키지 버전을 명시적으로 설치하지 않고도 커스텀 패키지가 Unity 패키지를 오버라이드하는 원활한 경험을 할 수 있습니다. 이는 패키지를 특정 레지스트리에 매핑하여 패키지 관리자가 Unity 레지스트리 또는 커스텀 패키지 레지스트리 서버에서 페치할 수 있기 때문입니다.

  • 폐쇄된 네트워크 환경의 패키지에 액세스합니다.

    일부 조직은 폐쇄된 네트워크 내에서 작동하므로 Unity의 패키지 레지스트리에 액세스하기가 어렵습니다. 이러한 경우 조직은 폐쇄된 네트워크 내 서버에서 자체 패키지 레지스트리를 설정할 수 있습니다. 그런 다음 네트워크 관리자는 주기적으로 Unity의 패키지 레지스트리와 동기화하여 범위 지정 레지스트리에 사용 가능한 최신 패키지 세트가 있는지 확인할 수 있습니다.

패키지 소비자의 경우 Unity 프로젝트의 기존 커스텀 패키지 레지스트리 서버에 연결하는 방법을 프로젝트의 범위 지정 레지스트리 관리에서 확인하십시오. 패키지 제작자의 경우 지원되는 패키지 레지스트리 서버에 대한 내용은 패키지 공유를 참고하십시오. 이 정보에는 범위 지정 레지스트리와 함께 사용할 수 있도록 설정하는 방법에 대한 링크도 포함됩니다.

참고: 액세스가 제한된 패키지 레지스트리 서버를 가리키는 범위 지정 레지스트리를 설정하는 경우, 패키지 관리자가 npm 인증 토큰을 서버에 전달하도록 설정할 수 있습니다. 자세한 내용은 범위 지정 레지스트리 인증을 참조하십시오.

범위 지정 레지스트리 추가 및 제거

Project Settings 창의 Package Manager 카테고리를 사용하여 프로젝트의 범위 지정 레지스트리를 추가하거나 수정하거나 제거할 수 있습니다.

범위 지정 레지스트리 임포트

공유 프로젝트에서 작업하는 경우 다른 사용자가 범위 지정 레지스트리를 프로젝트에 추가하면 Unity는 다른 사용자가 새 범위 지정 레지스트리를 추가했다고 경고합니다.

Unity는 프로젝트의 범위 지정 레지스트리 목록이 변경되면 경고를 표시합니다.
Unity는 프로젝트의 범위 지정 레지스트리 목록이 변경되면 경고를 표시합니다.

Close 버튼을 클릭하면 패키지 관리자의 Project Settings 창이 나타납니다. 여기에서 프로젝트의 범위 지정 레지스트리를 추가, 수정, 제거할 수 있습니다.

Read more를 클릭하면 Unity가 기본 웹 브라우저에서 현재 읽고 있는 페이지를 엽니다.

팁: 언제든지 패키지 관리자의 Project Settings 창에 액세스하려면 Unity의 메인 메뉴(Edit > Project Settings__로 이동 후 Package Manager__ 카테고리)를 사용하십시오. 패키지 관리자 창의 Advanced Settings 메뉴에서 __Advanced Project Settings__를 선택할 수도 있습니다.

프로젝트의 범위 지정 레지스트리 관리

프로젝트에서 범위 지정 패키지 레지스트리를 관리하려면 다음 중 하나를 수행하십시오.

프로젝트 매니페스트는 범위 지정 레지스트리 설정 오브젝트의 배열을 포함하는 scopedRegistries 프로퍼티를 사용합니다. 각 오브젝트에는 다음과 같은 프로퍼티가 있습니다.

프로퍼티 JSON 유형 설명
name String 사용자 인터페이스에 표시되는 범위 이름입니다. 패키지 관리자 창에서는 이 이름이 세부 정보 패널에 표시됩니다.

예: "name": "Tools"
url String npm 호환 레지스트리 서버의 URL입니다.

예: "url": "https://mycompany.example.com/tools-registry"

참고: 모든 레지스트리 공급자가 Unity의 패키지 관리자와 호환되는 것은 아닙니다. 추가하려는 패키지 레지스트리 서버가 /-/v1/search 또는 /-/all 엔드포인트를 구현하는지 확인하십시오.
overrideBuiltIns 부울 패키지가 범위 지정 레지스트리에 있는 경우 사용할 빌트인 패키지 버전을 결정하는 true 또는 false 값입니다.

false로 설정된 경우 패키지 관리자는 Unity 에디터에 포함된 빌트인 버전을 사용합니다. 기본값입니다.

true로 설정되어 있고 빌트인 패키지가 범위 지정 레지스트리에도 존재하는 경우 패키지 관리자는 범위 지정 레지스트리의 버전을 다운로드합니다.

이 프로퍼티의 범위는 url 프로퍼티에서 식별된 모든 패키지에 적용됩니다.
scopes 문자열 배열 패키지 이름에 매핑할 수 있는 범위 배열로, 패키지 이름과 정확히 일치하는 항목으로 매핑하거나 네임스페이스로 매핑할 수 있습니다. 와일드카드 및 기타 Glob 패턴은 지원되지 않습니다.

예: "scopes": [ "com.example", "com.example.tools.physics" ]

참고: 이 설정 유형은 패키지가 리버스 도메인 이름 표기법을 따르는 것으로 간주합니다. 이렇게 하면 com.unitycom.unity.timeline 또는 com.unity.2d.animation과 같이 com.unity 네임스페이스와 일치하는 모든 패키지 이름과 동등하게 됩니다.

경고: Unity는 npm의 범위 표기법을 지원하지 않습니다.

예제

예를 들어 아래의 프로젝트 매니페스트에는 두 개의 범위 지정 레지스트리, 즉 GeneralTools가 있습니다.

{
    "scopedRegistries": [
        {
            "name": "General",
            "url": "https://example.com/registry",
            "overrideBuiltIns": false,
            "scopes": [
                "com.example", "com.example.tools.physics"
            ]
        },
        {
            "name": "Tools",
            "url": "https://mycompany.example.com/tools-registry",
            "overrideBuiltIns": true,
            "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"
    }
}

패키지 관리자는 패키지를 가져올 레지스트리를 결정할 때 패키지 namescopes 값을 비교하여 scopes 값이 가장 일치하는 레지스트리를 찾습니다.

  • 패키지 관리자는 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 패키지를 조회할 때 범위 지정 레지스트리에서 일치하는 항목을 찾지 못할 수 있습니다. 이 경우 기본 레지스트리에서 패키지를 가져옵니다.

에디터에 포함된 빌트인 패키지가 GeneralTools 레지스트리에 있는 경우 패키지 관리자는 다음과 같이 이를 확인합니다.

  • 패키지 관리자는 overrideBuiltIns 값이 false이므로 General 범위 지정 레지스트리의 빌트인 패키지를 건너뜁니다. 대신 패키지 관리자는 Unity 에디터에 포함된 빌트인 버전을 사용합니다.
  • 패키지 관리자는 에디터 대신 Tools 범위 지정 레지스트리의 빌트인 패키지를 사용합니다. overrideBuiltIns 값이 true이기 때문입니다.

추가 리소스

에셋 패키지 캐시 위치 커스터마이즈
Get started with scoped registries