版本:Unity 6 (6000.0)
语言:英语
作用域注册表身份验证
自定义资源包缓存位置

自定义全局缓存

包管理器维护一个 全局缓存 用于压缩的包内容和注册表元数据。

全局缓存独立于包管理器维护的资源包缓存。有关 资源包来自 Unity 项目的文件和数据的集合,或项目的元素,它们被压缩并存储在一个文件中,类似于 Zip 文件,扩展名为 .unitypackage。资源包是共享和重复使用 Unity 项目和资产集合的一种便捷方式。 更多信息
请参阅 术语表
缓存的信息,请参考 自定义资源包缓存位置

默认情况下,包管理器的全局缓存根目录具有以下子目录,每个子缓存都有不同的用途

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

注意:如果您使用 Unity 编辑器 2023.2 创建了项目,您的全局缓存中可能还会有一个 packages 子目录。从 Unity 6 Beta 开始,包管理器不再使用此子目录。如果您不再维护使用旧版本编辑器创建的项目,则可以删除此子目录。

包管理器将全局缓存存储在默认位置,您可以覆盖该位置。有关全局缓存根目录的默认位置的信息,请参考 全局缓存

您可能出于多种原因想要覆盖全局缓存位置

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

从 2023.2.0f1 开始,db 子目录的最大大小默认为 10 吉字节 (GB),您可以覆盖它。您可能出于多种原因想要覆盖 db 子目录的最大大小

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

下表说明了您可以用来覆盖默认属性的不同方法

方法 全局缓存位置 db 子目录最大大小 其他说明
首选项窗口 这是推荐的方法,因为它简单且持久。当您使用此方法更改包缓存位置时,Unity 会存储当前和未来 Unity 编辑器会话的首选项。
用户配置文件 用户配置文件中的包缓存属性覆盖将持续存在于当前 Unity 编辑器会话之外。
环境变量 默认情况下,此方法为当前命令提示符(或终端)会话设置配置,但您可以在操作系统设置中使其永久生效。高级用户可能更喜欢特定用例中的基于会话的变量。

注意:使用首选项窗口设置全局缓存位置也会在用户配置文件中设置 cacheRoot 属性。如果您想手动设置用户配置文件,请参考 使用用户配置文件

开始之前的重要说明

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

使用首选项窗口

要使用首选项窗口覆盖全局缓存的默认位置,请按照以下步骤操作。

  1. 使用以下方法之一打开首选项窗口

    • 使用 Unity 编辑器的菜单,如 首选项 中所述。
    • 打开包管理器窗口,打开高级 菜单,然后选择首选项
  2. 选择包管理器类别。

  3. 下,打开缓存位置 旁边的菜单。

  4. 选择更改位置

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

The Preferences window with the Package Manager category selected
选择包管理器类别的首选项窗口

使用用户配置文件

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

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

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

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

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

您不需要在设置任一属性后重新启动 Unity 编辑器或 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 指定您希望包管理器将其用于注册表数据缓存的位置的绝对路径。默认情况下,这是全局缓存根目录下的 db 子目录。
UPM_ENABLE_GIT_LFS_CACHE 指定除空 (“”) 以外的任何值以启用 Git LFS 缓存。默认情况下,包管理器使用全局缓存根目录下的 git-lfs 子目录,除非您使用 UPM_GIT_LFS_CACHE_PATH 环境变量指定了不同的路径。
UPM_GIT_LFS_CACHE_PATH 指定您希望包管理器存储 Git LFS 缓存 的位置的绝对路径。通过设置此路径,您会自动启用 Git LFS 缓存。
UPM_MAX_CACHE_SIZE 指定注册表数据缓存(db 子目录)的最大大小,以字节为单位的正整数。例如,要将大小设置为 5 GB,请分配一个值为 5000000000 的值。

重要:使用此方法时,请遵循以下指南

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

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

其他资源

作用域注册表身份验证
自定义资源包缓存位置