Version: 6000.3
语言: 中文
全局缓存
自定义资产包缓存位置

自定义全局缓存

包管理器为压缩包内容和注册表元数据维护全局缓存

全局缓存与包管理器为资产包维护的缓存是分开的。有关资产包来自 Unity 项目或项目元素的文件和数据的集合,这些文件和数据被压缩并存储在一个文件中,类似于 Zip 文件,使用.unitypackage外延。资产包是共享和重用 Unity 项目和资产集合的便捷方式。更多信息
请参阅术语表
cache,请参阅自定义资产包缓存位置

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

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

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

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

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

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

从 2023.2.0f1 开始,最大大小db子目录默认为 10 GB,您可以覆盖该 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 编辑器的菜单,如首选项中所述。
    • 打开 包管理器(Package Manager) 窗口,打开 更多(⋮) 菜单,然后选择 首选项(Preferences)。
  2. 选择“包管理器”类别。

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

  4. 选择更改位置。

  5. 为全局缓存选择一个新位置。

选择了包管理器类别的首选项窗口
选择了包管理器类别的首选项窗口

使用用户配置文件

您可以手动编辑用户配置文件以覆盖全局缓存根的位置,或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

其他资源

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