Unity 使用一个包清单文件 (package.json
) 来管理特定版本特定包的信息。包清单始终位于包的根目录,并包含有关包的关键信息,例如其注册名称和版本号。
包清单还定义了有用的信息,以便与用户进行通信,例如
包清单使用 JSON(JavaScript 对象表示法)语法来描述包中的内容。该文件的格式类似于npm的package.json
格式,但其某些属性的语义不同。请参阅示例以获取示例包清单文件。
包管理器读取此清单以了解包的内容、如何解包其内容以及在包管理器窗口中显示哪些信息。清单将此信息存储在一系列必需、推荐和可选属性中。
如果这些属性不存在,则注册表在发布包时会拒绝该包,或者包管理器无法获取或加载该包。
属性 | JSON 类型 | 描述 |
---|---|---|
name | 字符串 | 符合 Unity 包管理器命名约定的唯一标识符,该约定使用反向域名表示法。有关命名约定的更多信息,请参阅命名您的包。 注意: name 标识符与在包管理器窗口的列表面板中显示的用户友好显示名称不同。 |
version | 字符串 | 包版本号,使用"major.minor.patch" 格式。例如, "3.2.1" 表示这是第 3 个主要版本、第 2 个次要版本和第 1 个补丁。此值必须遵循语义版本控制。有关更多信息,请参阅版本控制。 |
即使推荐属性缺失或具有无效值,包管理器也可以在项目中安装包。
但是,推荐的最佳做法是为这些属性分配值,以确保您的包可被发现并为用户提供更好的体验。
属性 | JSON 类型 | 描述 |
---|---|---|
description | 字符串 | 包的简要描述。这是在包管理器窗口的详细信息面板中显示的文本。此字段支持UTF–8字符代码。这意味着您可以使用特殊的格式化字符代码,例如换行符 (\n ) 和项目符号 (\u25AA )。 |
displayName | 字符串 | 在 Unity 编辑器中显示的用户友好名称(例如,在项目窗口、包管理器窗口等中)。displayName 值的示例包括Unity 时间线、ProBuilder和应用内购买。 |
unity | 字符串 | 指示包兼容的最低 Unity 版本。如果省略,则包管理器认为该包与所有 Unity 版本兼容。 预期格式为 "major.minor" (例如,"2018.3" )。要指向特定的补丁,还需要包含可选属性中描述的unityRelease 属性。注意:与 Unity 不兼容的包不会出现在包管理器窗口中。 |
这些属性是可选的,这意味着您可以省略它们。但是,如果它们存在,则必须具有有效值。
属性 | JSON 类型 | 描述 |
---|---|---|
author | 对象或字符串 | 包的作者。此属性仅支持一个作者。 此属性有一个必需字段name和两个可选字段email和url。 您可以将这些字段指定为 JSON 对象,或将其折叠成一个键为author的单个字符串。 对象示例 { "name" : "John Doe", "email" : "[email protected]", "url" : "http://john.doe.example.com/" } 字符串示例 "John Doe <[email protected]> (http://john.doe.example.com/)"
|
changelogUrl | 字符串 | 此包的更改日志的自定义位置,指定为 URL。例如"changelogUrl": "https://example.com/changelog.html" 注意:当包管理器无法访问 URL 位置(例如,如果存在网络问题)时,它会执行以下操作 - 如果已安装包,则包管理器会打开一个文件浏览器,显示包缓存中的 CHANGELOG.md 文件。- 如果未安装包,则包管理器会显示一条警告,指出脱机更改日志不可用。 |
dependencies | 对象 | 包依赖项的映射。键是包名称,值是特定版本。它们标识此包依赖的其他包。 注意:包管理器不支持范围语法,仅支持SemVer版本。 |
documentationUrl | 字符串 | 此包文档的自定义位置,指定为 URL。例如"documentationUrl": "https://example.com/" 注意:当包管理器无法访问 URL 位置(例如,如果存在网络问题)时,它会执行以下操作 - 如果已安装包,则包管理器会打开一个文件浏览器,显示包缓存中的 Documentation~ 文件夹。- 如果未安装包,则包管理器会显示一条警告,指出脱机文档不可用。 |
hideInEditor | 布尔值 | 默认情况下,项目窗口会隐藏包的资产,并在您在检查器窗口中使用对象选择器时将其从结果中省略。将此属性设置为"false" 以确保此包的资产始终可见。 |
keywords | 字符串数组 | 包管理器搜索 API 使用的关键字数组。这有助于用户找到相关的包。 |
license | 字符串 | 使用SPDX 标识符格式的 OSS 许可证的标识符,或字符串,例如“请参阅 LICENSE.md 文件”。 注意:如果您在包清单中省略此属性,则您的包必须包含 LICENSE.md 文件。 |
licensesUrl | 字符串 | 此包许可证信息的自定义位置,指定为 URL。例如"licensesUrl": "https://example.com/licensing.html" 注意:如果包管理器无法访问 URL 位置(例如,如果存在网络问题),它会执行以下操作 - 如果已安装包,它会打开一个文件浏览器,显示包缓存中的 LICENSE.md 文件。- 如果未安装包,则包管理器会显示一条警告,指出脱机许可证信息不可用。 |
samples | 对象数组 | 包中包含的示例列表。每个示例都有一个显示名称、一个描述和从Samples~ 文件夹开始的示例文件夹的路径{ "displayName": "<在 UI 中显示的名称>", "description": "<简短描述>", "path": "Samples~/<示例子文件夹>" } 有关更多信息,请参阅为包创建示例。 |
type | 字符串 | 保留供内部使用。 |
unityRelease | 字符串 | Unity 版本的一部分,指示包兼容的特定 Unity 版本。当更新的包需要在 Unity alpha/beta 开发周期中进行的更改时,您可以使用此属性。如果包需要新引入的 API,或者使用在不使用API 更新程序规则的情况下以不向后兼容的方式更改的现有 API,则可能是这种情况。 预期格式为 "<更新><版本> (例如,"0b4" )。注意:如果您省略推荐的unity属性,则此属性无效。 与 Unity 不兼容的包不会出现在包管理器窗口中。 |
{
"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": "[email protected]",
"url": "https://www.unity3d.com"
}
}