Version: 6000.3
语言: 中文
开始使用范围注册表
作用域注册表身份验证

在项目中使用作用域注册表

将作用域注册表添加到项目以访问自定义包。

范围注册表的完整性和安全性

每当您向项目添加作用域注册表时,请使用与安装任何其他第三方软件时相同的谨慎程度:

  • 仅从受信任源安装作用域注册表,因为这些注册表中的包可以包含可执行代码。
  • 谨防可能有害或在没有适当控制的情况下捕获数据的第三方注册表。还要提防那些谎称是 Unity 或获得 Unity 批准或支持的第三方。

管理项目的范围注册表

您可以使用项目设置(Project Settings) 广泛的设置集合,允许您配置物理、音频、网络、图形、输入和项目的许多其他区域的行为方式。更多信息
请参阅术语表
窗口或项目清单文件来管理项目中的作用域注册表。

使用“项目设置”窗口管理作用域注册表

你可以在 项目设置(Project Settings) 窗口的 包管理器(Package Manager) 面板中为项目添加、修改和删除作用域注册表。“作用域注册表”组在设置组左侧显示添加到当前项目的作用域注册表列表,并在右侧显示所选注册表的详细信息。

添加注册表

要使用 项目设置(Project Settings) 窗口的 包管理器(Package Manager) 面板将新的作用域注册表添加到项目中:

  1. 选择作用域注册表列表底部的“添加 (+)”按钮。列表中显示一个新条目,名为“新建作用域注册表”,右侧的详细信息为空值。
  2. 输入“名称”、“URL”和“范围”属性的值。
  3. 如果要指定多个范围,请选择最后一个范围值下方的添加 (+) 按钮以显示另一个范围文本字段。
  4. 输入所选作用域注册表的信息后,选择“保存”。若要取消添加新的作用域注册表,请选择“取消”

注意:添加作用域注册表时,可能会遇到以下一个或多个问题:

  • “我的注册表上下文不会显示在导航面板中。
  • 作用域注册表未列在“我的注册表”上下文下。

出现这些问题可能是因为您添加的包注册表服务器未实现/-/v1/search/-/all端点。Unity 的包管理器需要这些端点。

修改注册表

要使用“项目设置”窗口的“包管理器”面板修改现有作用域注册表,请执行以下作:

  1. 从左侧列表中选择要修改的注册表。现有作用域注册表的信息显示在右侧。
  2. 修改任何名称URL范围属性
  3. 更新所选作用域注册表的信息后,选择“应用”。若要取消更新,请选择“恢复”。

删除注册表

要使用“项目设置”窗口的“包管理器”面板删除现有作用域注册表,请执行以下作:

  1. 从列表中选择要删除的注册表。
  2. 选择列表下方的删除 (-) 按钮。将出现一个对话框,提示您确认删除。
  3. 选择“确定”以删除注册表,或选择“取消”以使其保持不变。

使用项目清单文件管理作用域注册表

项目清单每个 Unity 项目都有一个项目清单,用作包管理器的入口点。此文件必须在<project>/Packages目录。包管理器使用它来配置许多内容,包括该项目的依赖项列表,以及要查询包的任何包存储库。更多信息
请参阅术语表
使用 scopedRegistries 属性,该属性包含作用域注册表配置对象的数组。每个对象都有以下属性:

财产 JSON 类型 描述
名字 字符串 用户界面中显示的范围名称。包管理器(Package Manager) 窗口在详细信息面板中显示此名称。

例如
"name": "Tools".
网址 字符串 与 npm 兼容的注册表服务器的 URL。

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

注意:并非所有注册表提供程序都与 Unity 的包管理器兼容。确保您尝试添加的包注册表服务器实现了/-/v1/search/-/all端点。
范围 字符串数组 可以映射到包名称的范围数组,可以作为包名称的完全匹配项,也可以作为命名空间。不支持通配符和其他 glob 模式。

例如
"scopes": [ "com.example", "com.example.tools.physics" ]

注意:此配置类型假定软件包遵循反向域名表示法。这确保了com.unity等效于与com.unity命名空间,例如com.unity.timelinecom.unity.2d.animation.

警告:Unity 不支持 npm 的
@scope表示法。

项目清单示例

在以下项目清单中,有两个作用域注册表,GeneralTools:

{
    "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"
    }
}

当包管理器决定从哪个注册表获取包时,它会比较包namescopes值并查找其scopesvalue 是最接近的匹配项。以下方案显示了包管理器在评估GeneralTools上一个 JSON 文件中的注册表:

  • 当包管理器查找com.example.animationpackage,它会发现com.example命名空间与其名称最接近匹配,并从General注册表。
  • 当包管理器查找com.example.tools.physicspackage,Generalregistry 的范围与包名称完全匹配。
  • 当包管理器查找com.example.mycompany.tools.animationpackage,包管理器会发现com.example.mycompany.tools命名空间与其名称最接近匹配,并从Tools注册表。虽然它也匹配Generalscope,则com.example命名空间的匹配项不那么接近。
  • 当包管理器查找com.unity.animationpackage,包管理器在任何作用域注册表中都找不到匹配项。在这种情况下,它从默认注册表中获取包。

导入范围的注册表

如果您在共享项目中工作,并且其他用户向项目添加了作用域注册表,则 Unity 会警告您另一个用户添加了新的作用域注册表。

如果项目的作用域注册表列表发生更改,Unity 会向您发出警告
如果项目的作用域注册表列表发生更改,Unity 会向您发出警告

选择“关闭”时,将显示“包管理器”项目设置窗口,以便您可以管理项目的作用域注册表

如果选择“阅读更多”,Unity 会在默认 Web 浏览器中打开作用域注册表

提示:要随时访问包管理器项目设置窗口,请使用 Unity 中的主菜单(编辑>项目设置,然后是包管理器类别)。你还可以从 包管理器(Package Manager) 窗口的高级设置菜单中选择 高级项目设置(Advanced Project Settings)。

使用作用域注册表进行身份验证

如果要访问需要身份验证的作用域注册表,则必须使用 npm 身份验证配置包管理器用户配置文件。有关详细信息,请参阅作用域注册表身份验证

其他资源

开始使用范围注册表
作用域注册表身份验证