Version: 2019.4
项目清单
嵌入式依赖项

依赖关系

项目清单中的 dependencies 属性是一个 JSON 对象,可将包名称映射到版本。版本号指示要从包注册表下载包的哪个版本。例如:

{
  "dependencies": {
    "com.my-package": "2.3.1",
    "com.my-other-package": "1.0.1-preview.1",
       etc.
  }
}

除了使用版本号之外,Package Manager 还支持通过以下内容来添加项目依赖关系:

直接和间接依赖关系

直接依赖关系是项目级别的依赖关系。通过 Package Manager 窗口来安装包或手动编辑项目的 manifest.json 文件以显式添加依赖关系时,您将创建直接包依赖关系 ():

直接依赖关系 (A):项目清单中的包请求
直接依赖关系 (A):项目清单中的包请求

包可以声明自身对其他包的依赖关系。当您安装包时,此类包依赖关系将成为项目的间接 () 依赖关系,也称为传递性依赖关系。

间接依赖关系 (B):另一个包的清单中的包请求
间接依赖关系 (B):另一个包的清单中的包请求

Package Manager 会确定要安装包的哪个版本(无论包将成为项目的直接依赖项还是间接依赖项)。为此,Package Manager 将优先考虑直接依赖关系,然后才考虑间接依赖关系,但前提是更高优先级的版本不违反任何其他要求。

这种评估称为依赖关系解析,大致遵循以下逻辑:

  1. 选择直接依赖项的版本。
  2. 如果没有直接依赖项,并且这是__内置包__版本,则选择内置版本。
  3. 如果没有直接依赖项,并且这不是内置包版本,则检查这是不是多个包的间接依赖项:
    • 如果这是项目中唯一一个包的间接依赖项,则不存在冲突,因此请选择以下版本中的更高版本:
      • 此间接依赖项的版本
      • Unity 需要的最低版本
    • 如果出现多个间接依赖项,而且这些间接依赖项请求多个版本,则可能会产生冲突。Package Manager 可以使用自动冲突解决策略来解决大多数冲突。

在任何情况下,都可以手动覆盖这些解决策略。为此,请在项目清单中请求特定版本(通过从 Package Manager 窗口进行安装或通过直接编辑清单)。这将创建直接依赖关系,其优先级高于任何解决策略。

项目清单
嵌入式依赖项