Version: 2020.2
Dependency and resolution

Global Cache

When the Unity Package Manager downloads package contents and metadata, it stores them in a global cache. This makes re-using and sharing packages more efficient, and allows you to install and update stored packages even when offline.


By default, Unity stores the global cache in a root directory that depends on the operating system (and the user account type on Windows):

Operating system Default root directory
Windows (non-system user account) %LOCALAPPDATA%\Unity\cache
Windows (system user account) %ALLUSERSPROFILE%\Unity\cache
macOS $HOME/Library/Unity/cache
Linux $HOME/.config/unity3d/cache


The Package Manager uses two different shared caches, each serving a different purpose. They are stored in subdirectories under the folder location above:

Subfolder Description
npm Stores data obtained from registries using the npm protocol. This includes package metadata and package tarballs.
packages This cache contains the uncompressed contents of package tarballs fetched from a registry.

Inside each of these subfolders, each registry has its own path so that packages hosted on different registries are not mixed up.


The user account running the Unity Editor process must have full write permissions on the root directory and its contents. Without these permissions, the Package Manager cannot download and save the package metadata and contents in the cache.

Customizing the shared cache location

You can use two environment variables to override either global cache folder:

  • UPM_NPM_CACHE_PATH overrides the npm folder path. For example (macOS):


  • UPM_CACHE_PATH overrides the packages folder path. For example (macOS):


You must restart the Unity Editor and the Hub after changing either of these environment variables for them to take effect.

Dependency and resolution
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。