Unity Package Manager 在获取 UPM 软件包时,会将软件包内容和元数据存储在全局缓存中。这样就可以更有效地重复使用和共享包,甚至在脱机时也可以安装和更新所存储的包。
注意:将包存储在全局缓存中适用于从注册表获取的 UPM 包。来自__ Asset Store__由 Unity 和社区成员创建的免费和付费的资产库,其规模处于不断壮大中。提供各种资产,涵盖了从纹理、模型和动画到完整项目示例、教程和编辑器扩展等类型。更多信息
See in Glossary 的 UPM 格式包也会存储在全局缓存中。但是,来自 Asset Store 的 .unitypackage 格式资源包不会存储在全局缓存中。Package Manager 将资源包存储在单独的缓存中。有关更多信息,请参阅 Asset Store 资源包。
默认情况下,Unity 将全局缓存存储在根目录中,根目录取决于操作系统(在 Windows 上还取决于用户帐户类型):
| 操作系统 | 默认根目录 | 示例 |
|---|---|---|
| Windows(用户帐户) | %LOCALAPPDATA%\Unity\cache\upm |
C:\Users\yourname\AppData\Local\Unity\cache\upm |
| Windows(系统用户帐户) | %ALLUSERSPROFILE%\Unity\cache\upm |
C:\ProgramData\Unity\cache\upm |
| macOS | $HOME/Library/Caches/Unity/upm |
/Users/yourname/Library/Caches/Unity/upm |
| Linux | $HOME/.cache/Unity/upm |
/home/yourname/.cache/Unity/upm |
提示:可以覆盖此根目录的位置。请参阅自定义全局缓存以了解更多信息。
Package Manager 全局缓存使用几个附属缓存,每个有不同的用途。Package Manager 将这些辅助缓存存储在全局缓存文件夹下的子文件夹中:
| 子文件夹 | 描述 |
|---|---|
db |
用于存储包内容和元数据的注册表数据缓存。 |
git-lfs |
包含下载的 Git Large File Storage (LFS) 文件(如果已启用 Git LFS)。 |
packages(已弃用) |
如果使用 Unity Editor 2023.2 创建了项目,则可能存在此子文件夹。但是,从 Unity 6 开始,Package Manager 不再使用此子文件夹。 |
在每个子文件夹中,每个注册表都有其自己的路径,因此托管在不同注册表中的包不会混淆。
提示:可以覆盖这些文件夹的位置。请参阅自定义全局缓存以了解更多信息。
从 Unity Editor 版本 2023.2.0f1 开始,注册表数据缓存(db 子文件夹)的大小限制为 10 GB。达到该限制时,Package Manager 会通过驱逐最近使用频率最低的内容(基于包安装到项目中的最旧日期)来修剪注册表数据缓存。换句话说,Package Manager 驱逐的第一个包是添加在项目中的时间最长的包。但是,虽然 Package Manager 会将这些包从缓存中驱逐掉,但它们会保留在安装它们的任何项目中。下次将这些包添加到其他项目中时,Package Manager 将从相应的注册表获取它们,而不是从缓存获取它们。
可以覆盖注册表数据缓存限制的大小。有关信息,请参阅自定义全局缓存。
运行 Unity Editor 进程的用户帐户必须对根目录及其内容具有完全写入权限。没有这些权限,Package Manager 将无法下载包元数据和内容,也无法将它们保存在缓存中。