Version: 2022.2
How Unity works with packages
包状态和生命周期

概念

本节介绍有关 Unity Package Manager 功能的许多概念:

版本

每个包都有多个版本,标记了该包在自身的生命周期中所经历的更改。每次开发人员更新包时,都会为该包提供一个新的版本号。包版本的更改会告诉您这次更改包含了重大更改(主要)、新的向后兼容功能(次要)还是仅 Bug 修复(补丁),并遵循语义版本控制

要查看特定包可用的版本列表,请参阅查找特定版本

清单

清单文件有两种类型:

  • 项目清单 (manifest.json) 存储 Package Manager 在查找和加载正确的包时所需的信息,并列出声明为依赖项的包和版本。
  • 包清单 (package.json) 存储有关特定包的信息,并列出该包所需的包和版本。

这两种文件都使用 JSON(JavaScript 对象表示法)语法。

注册表

在 Unity 的 Package Manager 的领域中,包注册表是一个服务器,用于存储每个包版本的包内容和信息(元数据)。Unity 维护了一个可供分发的官方包的中央注册表。默认情况下,所有项目都使用官方的 Unity 包注册表,但是您可以添加其他注册表来存储和分发私有包或在开发期间暂存自定义包。

包管理

Unity Package Manager 是管理整个包系统的工具。此工具的主要任务包括:

The Unity Package Manager installs samples, tools, and assets on a per-project basis, rather than installing them across all projects for a specific machine or device. It uses a global cache to store downloaded package metadata and contents. Once installed in a project, Unity treats package assets just like any other asset in the project, except that these assets are stored inside the package folder and are immutable. You can permanently change content only from Local and Embedded package sources.

包来源

来源描述了包的来源:

来源 描述
注册表 对于大多数的包,在您请求这些包时,Unity Package Manager 将它们从包注册表服务器下载到计算机上的全局缓存中。这些包是不可变的,因此您可以在项目中使用这些包,但是不能修改这些包,也无法更改它们的包清单。
内置 这些包允许您启用或禁用 Unity 功能(例如,地形物理 (Terrain Physics)、动画 (Animation) 等)。这些包是不可变的。有关更多信息,请参阅内置包
嵌入式 项目文件夹中存储的所有包均为嵌入式。此来源与自定义状态相对应,因为当您开始自定义包的开发时,通常会将包所需的所有脚本、库、示例和其他资源放在项目文件夹下的文件夹中。
本地 可从计算机上的任何文件夹中安装包(例如,如果在本地克隆了开发代码仓库)。
Tarball (local) 可通过计算机上的 tarball 文件来安装包。Package Manager 从 tarball 中提取包并将其存储在缓存中。但是,与从本地文件夹安装不同,这些包是不可变的。
Git Package Manager 直接从 Git 代码仓库安装基于 Git 的包,而不是从包注册表服务器进行安装。

要编辑包的包清单,请参阅检查包

The Package Manager window displays a label that corresponds to some of these sources. For more information, see Labels.

Note: The Package Manager stores packages that you download from the Asset Store in a cache which is separate from the global cache. See Asset Store packages for more information.

How Unity works with packages
包状态和生命周期