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. The global cache is read-only to users and installed with Unity starting with version 2017.4.
デフォルトでは、Unity はグローバルキャッシュをルートディレクトリに保存します。ルートディレクトリは、オペレーティングシステムに依存します (Windows の場合はユーザーアカウントの種類にもよります)。
オペレーティングシステム | デフォルトルートディレクトリ |
---|---|
Windows (システムユーザーアカウント以外) | %LOCALAPPDATA%\Unity\cache |
Windows (システムユーザーアカウント) | %ALLUSERSPROFILE%\Unity\cache |
macOS | $HOME/Library/Unity/cache |
Linux | $HOME/.config/unity3d/cache |
Package Manager は 2 つの異なる共有キャッシュを使用しており、それぞれが異なる目的を果たしています。これらは上記の保存場所フォルダー配下のサブディレクトリに格納されています。
サブフォルダー | 説明 |
---|---|
npm |
npm プロトコルを使ってレジストリから取得したデータを保存します。これには、パッケージのメタデータとパッケージの .tgz ファイル が含まれます。 |
packages |
このキャッシュには、レジストリから取得した .tgz ファイルの圧縮されていないコンテンツが含まれています。 |
これらのサブフォルダの中には、それぞれのレジストリが独自のパスを持っています。そのため、異なるレジストリでホストされているパッケージが混ざらないようになっています。
Unity エディターのプロセスを実行するユーザーアカウントは、ルートディレクトリとそのコンテンツに対する完全な書き込み権限を持っていなければなりません。これらの権限がないと、Package Manager はパッケージのメタデータとコンテンツをダウンロードしてキャッシュに保存することができません。
2 つの環境変数を使用して、どちらかのグローバルキャッシュフォルダーをオーバーライドすることができます。
UPM_NPM_CACHE_PATH が npm フォルダーパスをオーバーライドします。以下は macOS の例。
UPM_NPM_CACHE_PATH=/dev/ssd/shared/Unity/cache/npm
UPM_CACHE_PATH が packages フォルダーパスをオーバーライドします。以下は macOS の例。
UPM_CACHE_PATH=/dev/ssd/shared/Unity/cache/packages
これらの環境変数のいずれかを変更した後、変更を有効にするには Unity Editor と Hub を再起動する必要があります。