当您在包管理器窗口中工作时,您可以从多个来源安装包(注册表、本地 文件夹 或 tarball、Git URL 以及按 名称)。但是,虽然包管理器可以无缝地从这些来源安装包,但它首先必须进行一系列计算才能确定要安装哪个版本。它还必须决定要安装哪些其他包和版本来支持您选择的包。
直接依赖关系
当您选择一个包版本通过包管理器窗口安装时,您就是在向您的 项目清单每个 Unity 项目都有一个项目清单,它充当包管理器的入口点。此文件必须位于<project>/Packages
目录中。包管理器使用它来配置许多内容,包括该项目的依赖项列表,以及要查询包的任何包存储库。 更多信息
请参阅 词汇表 添加“依赖项”。这是一个声明,即您需要特定版本的特定包才能使项目正常工作。要向您的项目添加依赖项,您需要以package-name@package-version
的形式将对包和版本的引用添加到<project-root>/Packages/manifest.json
文件的 依赖项 属性中。这些被称为“直接”依赖项,因为您的项目直接依赖于它们。
间接依赖关系
包也可能需要其他包才能正常工作。这些被称为“间接”(或传递)依赖项。包开发人员在开发期间将这些添加到包清单文件的 依赖项 属性中(<package-root>/package.json
)。例如,在下图中,[email protected]
包依赖于[email protected]
包,因此时间轴包是“间接”依赖项。相反,项目依赖于[email protected]
和[email protected]
包,因此它们都是“直接”依赖项。
版本覆盖
当您将包版本添加为依赖项时,该版本不一定是包管理器安装的版本。原因是包管理器必须考虑您项目中的所有依赖项,无论是直接的还是间接的。在以下示例中,请求的XR一个涵盖虚拟现实 (VR)、增强现实 (AR) 和混合现实 (MR) 应用程序的总称。支持这些形式的交互式应用程序的设备可以称为 XR 设备。 更多信息
请参阅 词汇表 插件管理 包是版本4.0.3
。但是,包管理器安装了版本4.0.6
,因为另一个包依赖于更高版本,如信息消息 (B) 所示
依赖项图
包管理器一次只能安装一个包版本,因此它必须构建一个 依赖项图。此图是项目所有直接和间接依赖项的列表。依赖项图确定要安装每个包的哪个版本。
锁定文件
当包管理器解决所有版本冲突时,它会将解决方案保存到 锁定文件 中,原因有两个