下面是自定义包的建议包布局:
<root>
  ├── package.json
  ├── README.md
  ├── CHANGELOG.md
  ├── LICENSE.md
  ├── Third Party Notices.md
  ├── Editor
  │   ├── [company-name].[package-name].Editor.asmdef
  │   └── EditorExample.cs
  ├── Runtime
  │   ├── [company-name].[package-name].asmdef
  │   └── RuntimeExample.cs
  ├── Tests
  │   ├── Editor
  │   │   ├── [company-name].[package-name].Editor.Tests.asmdef
  │   │   └── EditorExampleTest.cs
  │   └── Runtime
  │        ├── [company-name].[package-name].Tests.asmdef
  │        └── RuntimeExampleTest.cs
  ├── Samples~
  │        ├── SampleFolder1
  │        ├── SampleFolder2
  │        └── ...
  └── Documentation~
       └── [package-name].md
许多官方的 Unity 包也实现这种结构。
| 位置 | 描述 | 
|---|---|
| package.json | 包清单,定义了包的依赖项和其他元数据。 | 
| README.md | 开发者包文档。通常来说,这是文档,可帮助那些想要修改包或想要在包主源代码仓库中推送更改的开发者。 | 
| CHANGELOG.md | 对于包更改的描述,按照相反的时间顺序列示。最好使用标准格式,比如保留变更日志 (Keep a Changelog)。 | 
| LICENSE.md | 包含包许可证文本。通常,Package Manager 将从所选的 SPDX 列表网站复制文本。 | 
| Editor/ | 特定于 Editor 平台的 Assets 文件夹。与 Assets 下的 Editor 文件夹不同,这只是一个约定,不会影响资源导入管线。请参阅程序集定义和包以在此文件夹中正确配置特定于 Editor 的程序集。 | 
| Runtime/ | 特定于运行时平台的 Assets 文件夹。这只是一个约定,不会影响资源导入管线。请参阅程序集定义和包以在此文件夹中正确配置运行时程序集。 | 
| Tests/ | 用来存储包中所有包含的测试的文件夹。 | 
| Tests/Editor/ | 特定于 Editor 平台的测试文件夹。请参阅程序集定义和包以在此文件夹中正确配置特定于 Editor 的测试程序集。 | 
| Tests/Runtime/ | 特定于运行时平台的测试。请参阅程序集定义和包以在此文件夹中正确配置运行时测试程序集。 | 
| Samples~/ | 用来存储包中所有包含的示例的文件夹。 | 
| Documentation~ | 用来存储包中所有包含的文档的文件夹。 | 
Unity 会忽略以 ~ 字符结尾的所有文件夹名称的内容,并且不会使用 .meta 文件跟踪它们。但是,您需要为 Editor、Runtime 和 Tests 文件夹及其内容包含 .meta 文件,以便它们正常运行。有关 .meta 文件以及 Unity 如何使用它们进行跟踪的更多信息,请参阅资源工作流程。