Version: Unity 6.0 (6000.0)
语言 : 中文
全局缓存
自定义资源包缓存位置

自定义全局缓存

Package Manager 为压缩包内容和注册表元数据维护全局缓存

全局缓存与 Package Manager 为资源包维护的缓存是分开的。有关资源包缓存的信息,请参阅自定义资源包缓存位置

默认情况下,Package Manager 的全局缓存根具有以下子目录,每个辅助缓存具有不同的用途:

  • db 子目录存储注册表数据(包元数据和 tarball)。
  • 如果已启用 Git LFS,则 git-lfs 子目录会存储下载的 Git Large File Storage (LFS) 文件。

注意:如果您已经使用 Unity Editor 2023.2 创建了项目,则全局缓存可能还有一个 packages 子目录。从 Unity 6 Beta 开始,Package Manager 不再使用此子目录。如果不再维护使用旧版编辑器 (Editor) 创建的项目,则可以删除此子目录。

Package Manager 将全局缓存存储在默认位置,但您可以覆盖该位置。有关全局缓存根目录的默认位置的信息,请参阅全局缓存

您可能出于以下原因,希望覆盖全局缓存位置:

  • 希望节省内部驱动器上的空间。
  • 要将缓存存储在共享驱动器上,以便其他人可以访问它。
  • 要将缓存存储在系统目录中以外的文件夹中。

从 2023.2.0f1 开始,db 子目录的最大大小默认为 10 GB,但您可以覆盖该大小。您可能出于以下原因,希望覆盖 db 子目录的最大大小:

  • 如果您有少量可用磁盘空间,则可以降低限值以节省空间。
  • 如果可用磁盘空间很大,则可以提高限值。这样 Package Manager 就可以在缓存中存储更多数据,因此可以从缓存中获取包,而不是再次下载包。缓存包的安装速度更快,并减少了网络使用量。

下表说明了可用于覆盖默认属性的不同方法:

方法 全局缓存位置 db 子目录最大大小 补充说明
偏好 (Preferences) 窗口 这是推荐的方法,因为它很容易实现且具有持久性。使用此方法更改包缓存位置时,Unity 会存储当前和未来 Unity Editor 会话的偏好设置。
用户配置文件 用户配置文件中的包缓存属性覆盖设置在当前 Unity Editor 会话之后仍然存在。
环境变量 默认情况下,此方法为当前命令提示符(或终端)会话设置配置,但可以在操作系统设置中设为永久配置。在特定用例中,高级用户可能更喜欢基于会话的变量。

注意:使用偏好窗口设置全局缓存位置也会导致在用户配置文件中设置 cacheRoot 属性。如果要手动设置用户配置文件,请参阅使用用户配置文件

开始之前的重要注意事项

  • 无论选择哪种方法,更改缓存位置都会告诉 Package Manager 继续使用该位置。Package Manager 存储在原始位置的现有包将保留在该文件夹结构中。
  • 如果设置了 db 子目录的最大大小,并且新大小小于该子目录的当前大小,则 Package Manager 将从缓存中驱逐内容,直到达到新限制。Package Manager 首先驱逐最近使用最少的内容(基于项目的安装日期)。
  • 当您使用用户配置文件时,更改项将应用​​于当前用户帐户。虽然存在全局配置文件,但无法在全局配置文件中设置缓存覆盖项。
  • 有几个因素会影响使用不同方法设置多个值的协同工作方式:
    • 如果使用环境变量方法更改缓存位置,则无法使用偏好窗口更改位置。
    • 设置环境变量优先于在用户配置文件或偏好窗口中应用相同的设置。
    • 如果为注册表数据缓存 (UPM_NPM_CACHE_PATH) 或 Git LFS 缓存 (UPM_GIT_LFS_CACHE_PATH) 设置了环境变量,则 Package Manager 将使用环境变量指定的位置,无论全局缓存根目录在哪里。
    • 如果启用了 Git LFS 缓存 (UPM_ENABLE_GIT_LFS_CACHE),但未显式制定其路径 (UPM_GIT_LFS_CACHE_PATH),Package Manager 将使用全局缓存根下的 git-lfs 文件夹作为其位置。

使用“偏好”窗口

要使用偏好窗口覆盖全局缓存的默认位置,请执行以下步骤。

  1. 使用以下方法之一打开偏好窗口:

    • 使用 Unity Editor 的菜单,如偏好中所述。
    • 打开 Package Manager 窗口,打开高级 (Advanced) 菜单,然后选择偏好 (Preferences)
  2. 选择 Package Manager 类别。

  3. 包 (Packages) 下,打开缓存位置 (Cache Location) 旁边的菜单

  4. 选择更改位置 (Change Location)

  5. 选择全局缓存的新位置。

已选择 Package Manager 类别的“偏好”窗口
已选择 Package Manager 类别的“偏好”窗口

使用用户配置文件位置

可以手动编辑用户配置文件以覆盖全局缓存根目录的位置或 db 子目录的最大大小,或两者都实现。

按照以下步骤编辑用户配置文件:

  1. 找到 .upmconfig.toml 用户配置文件位置。要查找文件位置,请参阅配置文件。如果文件不存在,请创建一个空文本文件。

  2. 要覆盖全局缓存根的位置,请添加 cacheRoot 键并将其值设置为自定义位置的绝对路径。重要提示:在 TOML 文件中设置 Windows 路径时,请使用正斜杠 (/) 或双反斜杠 (\\)。不要使用单个反斜杠 (\),因为它们是标记转义序列的特殊字符,可能导致 TOML 解析错误。

  3. 要覆盖 db 子目录的最大大小,请添加 maxCacheSize 键并将其值设置为表示字节数的正整数。例如,要将大小设置为 5 GB,请分配 5000000000 的值。

设置这两项属性后,无需重启 Unity Editor 或 Hub 即可让更改生效。

Windows 示例

cacheRoot = "E:\\Unity\\cache"
maxCacheSize = 5000000000

macOS 和 Linux 示例

cacheRoot = "/dev/external/shared/Unity/cache"
maxCacheSize = 5000000000

使用环境变量

在涉及自动化或持续集成的情况下,在用户配置文件或偏好窗口中配置设置不太实用,也更容易出错。在这种情况下,可以考虑使用环境变量来配置全局缓存及其附属缓存的设置。以下环境变量可用:

环境变量 描述
UPM_CACHE_ROOT 指定全局缓存的位置(包含注册表数据和未压缩包缓存的根文件夹)。
UPM_NPM_CACHE_PATH 指定您希望 Package Manager 用于其注册表数据缓存的位置的绝对路径。默认情况下,这是全局缓存根目录下的 db 子文件夹。
UPM_ENABLE_GIT_LFS_CACHE 指定空值 ("") 以外的任何值以启用 Git LFS 缓存。默认情况下,Package Manager 使用全局缓存根目录下的 git-lfs 子目录,除非您使用 UPM_GIT_LFS_CACHE_PATH 环境变量指定了不同的路径。
UPM_GIT_LFS_CACHE_PATH 指定您希望 Package Manager 存储 Git LFS 缓存的位置的绝对路径。通过设置此路径,可自动启用 Git LFS 缓存。
UPM_MAX_CACHE_SIZE 将注册表数据缓存(db 子目录)的最大大小指定为正整数(以字节为单位)。例如,要将大小设置为 5 GB,请分配 5000000000 的值。

重要提示:使用此方法时,请遵循以下准则:

  • 如果在设置环境变量之前 Unity Editor 和 Unity Hub 已在运行,请关闭它们。
  • 从设置环境变量的同一命令提示符或终端会话启动 Unity Editor 或 Unity Hub。
  • 如果在上表中设置了任何环境变量,必须在每次启动 Unity 时设置它们。

有关设置环境变量的信息,请参阅操作系统的文档。有关环境变量的介绍,请参阅 https://en.wikipedia.org/wiki/Environment_variable

其他资源

全局缓存
自定义资源包缓存位置