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 (user account) | %LOCALAPPDATA%\Unity\cache |
Windows (system user account) | %ALLUSERSPROFILE%\Unity\cache |
macOS | $HOME/Library/Unity/cache |
Linux | $HOME/.config/unity3d/cache |
Tip: You can override the location of this root directory with either the UPM_CACHE_ROOT
environment variable or the cacheRoot
property in a configuration file. See Customizing the shared cache locations for more information.
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.
Tip: You can override the location of these folders using environment variables. See Customizing the shared cache locations for more information.
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.