Unity 使用包清单文件 (package.json) 来管理有关特定包的特定版本的信息。包清单始终位于包的根目录,并且含有包的重要信息,例如其注册名称和版本号。
包清单还定义了要传达给用户的有用信息,例如:
包清单使用 JSON(JavaScript 对象表示法)语法来描述包中的内容。该文件的格式类似于 npm 的 package.json 格式,但其某些属性使用了不同的语义。请参阅示例包清单文件的示例。
Package Manager 读取此清单以确认包中所含的内容,如何解压缩其内容,以及在 Package Manager 窗口中显示哪些信息。清单将此信息存储在一系列必需、强制和可选属性中。
如果不存在这些属性,则注册表在发布包时会拒绝该包,或者 Package Manager 无法获取或加载该包。
| 属性 | JSON 类型 | 描述 |
|---|---|---|
| name | 字符串 | 一种唯一标识符,遵循 Unity Package Manager 命名约定,也就是使用反向域名表示法。有关命名约定的更多信息,请参阅命名资源包。 注意: name 标识符与 Package Manager 窗口的列表面板中显示的用户友好显示名称不同。 |
| version | 字符串 | 包版本号,使用格式 "major.minor.patch"。例如, "3.2.1" 表示这是第 3 个主要发行版、第 2 个次要发行版和第 1 个补丁。该值必须遵守语义版本控制。有关更多信息,请参阅版本控制。 |
即使缺少建议的属性或具有无效值,Package Manager 也可以在项目中安装包。
但是,建议的最佳做法是为这些属性分配值,以确保您的包可被发现,并为用户提供更好的体验。
| 属性 | JSON 类型 | 描述 |
|---|---|---|
| description | 字符串 | 包的简要描述。这是在 Package Manager 窗口的详细信息面板中显示的文本。此字段支持 UTF–8 字符代码。这意味着您可以使用特殊格式的字符代码,例如换行符 (\n) 和项目符号 (\u25AA)。 |
| displayName | 字符串 | 一个显示在 Unity 编辑器中的用户友好名称(例如,显示在 Project 窗口中、Package Manager 窗口中,等等)。 例如, displayName 值包括 Unity Timeline、ProBuilder 和 In App Purchasing。 |
| unity | 字符串 | 指示包兼容的最低 Unity 版本。如果忽略,Package Manager 会认为该包与所有 Unity 版本兼容。 预期格式为 "major.minor"(例如,"2018.3")。Unity 6 及更高版本遵循相同的 "####.#" 格式。例如,Unity 6 的技术版本号为 "6000.0"。要指向特定补丁,还需包含 unityRelease 属性(在可选属性中有相关描述)。注意:与 Unity 不兼容的包不会出现在 Package Manager 窗口中。 |
这些属性是可选的,这意味着您可以将其省略。但如果存在,则必须具有有效值。
| 属性 | JSON 类型 | 描述 |
|---|---|---|
| author | 对象或字符串 | 包的作者。此属性仅支持一位作者。 此属性有一个必填字段(名称 (name))以及两个可选字段(电子邮件 (email) 和 url)。 您可以将这些字段指定为 JSON 对象,或者将它们合并到一个单独的键为 author 的字符串。 对象示例: {"name" : "John Doe","email" : "john.doe@example.com","url" : "http://john.doe.example.com/"}字符串示例: "John Doe <john.doe@example.com> (http://john.doe.example.com/)"
|
| changelogUrl | 字符串 | 此包变更日志的自定义位置,以 URL 形式指定。例如:"changelogUrl": "https://example.com/changelog.html"注意:Package Manager 无法访问 URL 位置时(例如,如果存在网络问题),它会执行以下操作: - 如果安装了包,Package Manager 会打开一个文件浏览器,其中显示包缓存中的 CHANGELOG.md 文件。- 如果未安装该包,Package Manager 会显示一条警告,指出离线更改日志不可用。 |
| dependencies | 对象 | 包依赖关系映射。键是包名称,值是特定版本。它们标识此包依赖的其他包。 注意:Package Manager 不支持范围语法,仅支持 SemVer 版本。 |
| documentationUrl | 字符串 | 此包的文档的自定义位置,以 URL 形式指定。例如:"documentationUrl": "https://example.com/"注意:Package Manager 无法访问 URL 位置时(例如,如果存在网络问题),它会执行以下操作: - 如果安装了包,Package Manager 会打开一个文件浏览器,其中显示包缓存中的 Documentation~ 文件夹。- 如果未安装该包,Package Manager 会显示离线文档不可用的警告。 |
| hideInEditor | 布尔值 | 默认情况下,在检视面板 (Inspector) 窗口中使用对象选取器 (Object Picker) 时,项目 (Project) 窗口会隐藏包的资源并从结果中省略这些资源。将此属性设置为 "false" 可确保此包的资源始终可见。 |
| keywords | 字符串数组 | Package Manager 搜索 API 使用的关键字数组。这可以帮助用户找到相关的包。 |
| license | 字符串 | OSS 许可证的标识符使用 SPDX 标识符格式,或一个字符串,如“Refer to LICENSE.md file”。 注意:如果在包清单中省略此属性,则包必须包含 LICENSE.md 文件。 |
| licensesUrl | 字符串 | 此包的许可证信息的自定义位置,以 URL 形式指定。例如:"licensesUrl": "https://example.com/licensing.html"注意:如果 Package Manager 无法访问 URL 位置(例如,如果存在网络问题),它会执行以下操作: - 如果安装了包,则会打开一个文件浏览器,其中显示包缓存中的 LICENSE.md 文件。- 如果未安装该包,Package Manager 会显示一条警告,指出离线许可证信息不可用。 |
| samples | 对象数组 | 包中包含的样本列表。每个示例都有一个显示名称、描述以及从 Samples~ 文件夹开始的示例文件夹的路径:{"displayName": "<name-to-appear-in-the-UI>","description": "<brief-description>","path": "Samples~/<sample-subfolder>"}有关更多信息,请参阅创建包示例。 |
| type | 字符串 | 保留仅供内部使用。 |
| unityRelease | 字符串 | Unity 版本的一部分,指示与包兼容的特定 Unity 版本。当更新的包需要在 Unity Alpha/Beta 开发周期中进行更改时,可以使用此属性。如果包需要新引入的 API,或者使用的现有 API 发生了无法兼容旧版本代码的变更且无 API 更新程序规则调整旧版代码,则可能属于这种情况。 预期格式为 "<update><release>(例如,"0b4")。 注意:如果省略推荐的 unity 属性,则此属性不起作用。 与 Unity 不兼容的包不会出现在 Package Manager 窗口中。 |
{
"name": "com.[company-name].[package-name]",
"version": "1.2.3",
"displayName": "Package Example",
"description": "This is an example package",
"unity": "2019.1",
"unityRelease": "0b5",
"documentationUrl": "https://example.com/",
"changelogUrl": "https://example.com/changelog.html",
"licensesUrl": "https://example.com/licensing.html",
"dependencies": {
"com.[company-name].some-package": "1.0.0",
"com.[company-name].other-package": "2.0.0"
},
"keywords": [
"keyword1",
"keyword2",
"keyword3"
],
"author": {
"name": "Unity",
"email": "unity@example.com",
"url": "https://www.unity3d.com"
}
}