Unity Package Manager 在下载包内容和元数据时,会将它们存储在全局缓存中。这样可以更有效地重复使用和共享包,甚至在脱机时也可以安装和更新存储的包。
默认情况下,Unity 将全局缓存存储在根目录中,根目录取决于操作系统(在 Windows 上还取决于用户帐户类型):
操作系统 | 默认根目录 |
---|---|
Windows(非系统用户帐户) | %LOCALAPPDATA%\Unity\cache |
Windows(系统用户帐户) | %ALLUSERSPROFILE%\Unity\cache |
macOS | $HOME/Library/Unity/cache |
Linux | $HOME/.config/unity3d/cache |
Package Manager 使用两个不同的共享缓存,每个有不同的用途。它们存储在上述文件夹位置下的子目录中:
子文件夹 | 描述 |
---|---|
npm |
存储使用 npm 协议从注册表获得的数据。这包括包元数据和包 tarball。 |
packages |
此缓存包含从注册表获取的包 tarball 的未压缩内容。 |
在每个子文件夹中,每个注册表都有其自己的路径,因此不会混淆托管在不同注册表中的包。
运行 Unity Editor 进程的用户帐户必须对根目录及其内容具有完全写权限。没有这些权限,Package Manager 将无法下载包元数据和内容,也无法将它们保存在缓存中。
可以使用两个环境变量来覆盖任一全局缓存文件夹:
UPM_NPM_CACHE_PATH 覆盖 npm 文件夹路径。例如 (macOS):
UPM_NPM_CACHE_PATH=/dev/ssd/shared/Unity/cache/npm
UPM_CACHE_PATH 覆盖 packages 文件夹路径。例如 (macOS):
UPM_CACHE_PATH=/dev/ssd/shared/Unity/cache/packages
更改这些环境变量中的任何一个后,必须重新启动 Unity Editor 和 Hub 才能使更改生效。