文档

Unity Engine

Unity Engine

创建自定义包

Understand the development workflow for creating new UPM packages.
阅读时间8 分钟最后更新于 1 个月前

Unity Package Manager 是 Unity 的官方包管理系统。具备以下功能:
  • 允许 Unity 快速轻松地分发新功能以及更新现有功能。
  • 为用户提供一个发现和共享可重用组件的平台。
  • 将 Unity 提升为可扩展的开放平台。
你可以使用 Package Manager 来定义项目依赖项、解析包依赖关系、下载软件包、添加软件包,以及将内容集成到你的项目中。
有关包的简介以及 Unity Package Manager 工作方式的一般信息,请参阅包 (Packages) 文档。

概述

包可以包含以下内容:
  • C# 脚本
  • 程序集
  • 原生插件
  • 模型、纹理、动画和音频剪辑以及其他资源。
注意:Package Manager 不支持包中的流媒体资源。请改用 Addressables 包。
每个包还包含一个包清单文件,其中包含诸如包名称、其版本、其依赖项列表以及其代码仓库 URL 之类的信息。

程序

要创建新包,请执行以下操作:
  1. 使用下列方法之一来为包创建一个空壳:
  2. 确保文件夹结构的布局遵循 Unity 包的包布局约定。例如,如果有 Editor 和 Runtime 库,请确保将它们存储在
    Editor
    和
    Runtime
    文件夹下。
  3. 如果包中包含代码,请确保创建的包布局具有必要的程序集定义文件。有关创建和定义程序集定义文件的信息,请参阅程序集定义和包。有关更多信息,请参阅程序集定义。
    注意:如果在添加程序集定义文件后,控制台窗口发出警告,请保存项目,将其关闭,然后重新打开。
  4. 添加包所需的工具、库以及任何资源。
  5. 向包添加测试。测试对于确保包在不同情况下能够按预期工作至关重要:
    • 将所有 Editor 测试写入
      Tests/Editor
      中。
    • 将所有播放模式 (Play Mode) 测试写入
      Tests/Runtime
      中。
  6. 如果有包的示例,请将它们添加到相应示例子文件夹。
    注意:包只能包含示例,不过,如果使用相同的布局和 JSON 结构,也可以将示例作为工具或模板包的一部分包含在内。
  7. 可以在每次发布新版本时更新
    CHANGELOG.md
    文件。每个新功能或错误修复都应在此文件中留下记录。有关所选变更日志格式的更多详细信息,请参阅保留变更日志文档。
    对于未共享的包,此步是可选的操作,但对于共享的包,强烈建议这样做,以便用户知道哪个版本最符合他们的需求。
    提示:您可以通过在包的
    package.json
    清单文件中设置 changelogUrl 属性来提供一个指向外部网页(承载该包的变更日志)的链接。
  8. 您可以在
    LICENSE.md
    和
    THIRD PARTY NOTICES.md
    文件中包含许可证和第三方声明。
    对于未共享的包,此步是可选的操作,但对于共享的包,强烈建议这样做,以免用户滥用您的包或违反任何第三方许可证的要求。
    提示:您可以通过在包的
    package.json
    清单文件中设置 licensesUrl 属性来提供一个指向外部网页(承载该包的许可和第三方声明)的链接。
  9. 为包撰写文档。
    提示:您可以通过在包的
    package.json
    清单文件中设置 documentationUrl 属性来提供一个指向外部网页(承载该包的文档)的链接。
  10. 共享包。

创建新的嵌入式包

如果要在项目文件夹内创建自定义包,请遵循以下说明:
注意:这些说明是创建自定义包流程的一部分。
  1. 打开 Unity Hub,然后在计算机上创建一个空项目。
    也可以使用计算机上的现有项目,然后将包嵌入在项目下或从本地文件夹安装包。但是,创建新项目的做法会降低包内容出错的几率。
  2. 使用计算机的文件管理器(例如 Windows 文件资源管理器或 macOS Finder),导航到项目文件夹,然后找到
    Packages
    子目录。
  3. 使用与包名称匹配并遵循命名约定的名称在
    Packages
    文件夹中为包创建一个新的子目录。例如,如果包名称为
    com.example.mypackage
    ,请创建一个名为
    com.example.mypackage
    的子目录。
    注意:如果包中含有资源,这一点尤其重要,因为 AssetDatabase 会查找与
    Packages/<your-package-name>/Assets
    匹配的资源路径
    (无论实际的文件夹名称如何)。
  4. 打开所选的文本编辑器,然后在包文件夹根目录中创建一个名为
    package.json
    的 JSON 文件。
  5. 填写
    package.json
    文件中所有的必填和建议字段。您可以使用包清单示例作为参考。
重新打开 Unity 时,新包会显示在 Package Manager 窗口中和 Project 窗口中,可在其中查看和修改包内容。如果在 Project 窗口中选择
package.json
文件,则也可以直接在 Inspector 窗口中修改其内容。
返回到主程序以完成包的创建。

创建新的本地包

如果要在项目文件夹外创建自定义包,请遵循以下说明:
注意:这些说明是创建自定义包流程的一部分。
  1. 使用计算机的文件管理器(例如 Windows 文件资源管理器或 macOS Finder),为包创建一个文件夹。
    如果已经为包创建了一些内容,则也可以使用现有位置。
  2. 打开所选的文本编辑器,然后在包文件夹根目录中创建一个名为
    package.json
    的 JSON 文件。
  3. 填写
    package.json
    文件中的所有的必填和建议字段,确保
    name
    属性遵循命名约定。您可以使用包清单示例作为参考。
  4. 在 Unity 中,创建一个新项目或打开一个现有项目。
  5. 打开 Package Manager 窗口,然后使用刚刚创建的
    package.json
    文件,按照安装本地包的说明操作。此步对于确保创建所需的
    .meta
    文件至关重要。
新包会显示在 Package Manager 窗口中和 Project 窗口中,可在其中查看和修改包内容。如果在 Project 窗口中选择
package.json
文件,则也可以直接在 Inspector 窗口中修改其内容。
返回到主程序以完成包的创建。