本节解释了围绕 Unity 包管理器功能的许多概念。
每个包都提供了多个版本,标记了该包在其生命周期中的变化。每次开发者更新包时,他们都会为其提供新的版本号。包版本的更改会告诉您它是否包含重大更改(主版本)、向后兼容的新功能(次版本)或仅包含错误修复(修补程序)。这些指示符遵循语义版本控制规则。
要查看特定包可用的版本列表,请参阅查找特定版本。
清单文件有两种类型
<project>/Packages
目录中。包管理器使用它来配置许多内容,包括该项目的依赖项列表,以及查询包的任何包存储库。更多信息manifest.json
) 存储包管理器需要查找和加载正确包的信息,包括声明为依赖项的包和版本的列表。package.json
) 存储有关特定包的信息,以及该包所需的包和版本的列表。这两个文件都使用JSON(JavaScript 对象表示法)语法。
在 Unity 包管理器的领域中,包注册表是一个服务器,用于存储包内容以及每个包版本的信息(元数据)。Unity维护着一个官方包的中央注册表,这些包可供分发。默认情况下,所有项目都使用官方的 Unity 包注册表。但是,您可以添加其他注册表来存储和分发私有包,或者在开发自定义包时对其进行暂存。
Unity 包管理器是一个管理整个包系统的工具。其主要任务包括以下内容
Unity 包管理器基于每个项目安装示例、工具和资产,而不是为特定机器或设备上的所有项目安装它们。它使用全局缓存来存储下载的包元数据和内容。安装到项目后,Unity 会将包资产与项目中的其他资产类似地对待。唯一的区别是这些资产存储在包文件夹内并且是不可变的您无法更改不可变(只读)包的内容。这与可变相反。大多数包都是不可变的,包括从包注册表或通过 Git URL 下载的包。
请参阅术语表。您只能从本地和嵌入包来源永久更改内容。
来源描述了包的来源
来源 | 描述 |
---|---|
注册表 | Unity 包管理器在您请求时,会将大多数包从包注册表服务器下载到计算机上的全局缓存中。这些包是不可变的,因此您可以在项目中使用它们,但不能修改它们或更改其包清单。 |
内置 | 这些包允许您启用或禁用 Unity 功能(例如,地形物理、动画等)。内置包是不可变的。有关更多信息,请参阅内置包内置包允许用户通过包管理器启用或禁用 Unity 功能。启用或禁用包会减小运行时构建大小。例如,大多数项目不使用旧版粒子系统。通过移除此功能的抽象包,相关代码和资源不会成为最终构建产品的一部分。通常,这些包仅包含包清单,并与 Unity 捆绑在一起(而不是在包注册表中可用)。 请参阅术语表。 |
嵌入 | 一个嵌入包嵌入包是存储在 Unity 项目根目录下的Packages 目录中的可变包。这与您从包服务器下载的大多数包不同,后者是不可变的。更多信息请参阅术语表是存储在项目文件夹内的任何包。此来源对应于自定义状态,因为在开始开发自定义包时,您通常会将新包所需的所有脚本、库、示例和其他资产放在项目文件夹下的文件夹中。 |
本地 | 您可以从计算机上的任何文件夹安装包(例如,如果您已在本地克隆了开发存储库)。 |
Tarball(本地) | 您可以从计算机上的 tarball 文件安装包。包管理器会从 tarball 中提取包并将其存储在缓存中。但是,与从本地文件夹安装不同,这些包是不可变的。 |
Git | 包管理器直接从 Git 存储库而不是从包注册表服务器安装基于Git的包。 |
要编辑包的包清单,请参阅检查包。
包管理器窗口会显示与其中一些来源相对应的标签。有关更多信息,请参阅标签。
注意:包管理器将您从 Asset Store 下载的包存储在不同的缓存中,具体取决于包类型。
.unitypackage
。资产包是共享和重用 Unity 项目和资产集合的便捷方法。更多信息