テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】PackageManagerが提供するパッケージのダウンロード先と、パッケージを改造する方法

今回はPackageManagerがダウンロード(キャッシュ)する先のフォルダの確認と、PackageManagerが提供する機能を改造する方法について紹介します。

 

PacakgeManagerは機能をUnityエディターに追加する

Unity 2018.1からPackageManagerという機能が導入され、プロジェクトの中身を汚さず追加機能が導入出来るようになりました。
最近のUnityは新機能の大半をこの機能経由で導入しており、(幾つかの内部エンジンが関係しているような機能以外は)Unityエディターのアップデート無しにバグフィックスや新機能の追加、古いバージョンの導入等が可能になっています。

(Unity 2018.2からはエンジン機能の明示的なストリップにも対応)

f:id:tsubaki_t1:20180816213143j:plain

これはUnityエディターにプラグインのように追加しているのではなく、特定のフォルダパスに事前にパッケージをダウンロードしておき、プロジェクト毎にパッケージを参照する事で実現しています。

つまり、何処かにファイルがダウンロードされている訳です。

 

PacakgeManagerでダウンロードしたファイルを保存するパス

肝心のPackageManagerでダウンロードしたファイルを保存するパスですが、

WindowsC:\Users\ANY_LOGIN_ID\AppData\Local\Unity\cache\packages\packages.unity.com\*Mac~/Library/Unity/cache/packages/packages.unity.com/*にあります。
面倒ならば、Unity 2018.2からならばPacakgeManagerからShow In Explorer等で探してやると良いです。

f:id:tsubaki_t1:20180816214306j:plain

なお、Windowsの場合Cドライブに作られパスの変更は出来ません*1


また過去にDLしたパッケージを全て保持しているらしく、Cドライブを容量小さめのSSDにしている自分みたいなタイプでは気づいたら容量がなくなってたりします。

自分の環境ではパッケージの保持に800MB程使用していました。

f:id:tsubaki_t1:20180816214738j:plain

ついでに経験則ですが、もしネットワークが不調(例えば貧弱なネットワーク環境で大人数のワークショップをする等)だったりPackageManager側のサーバーが不安定だったりで中途半端にパッケージがダウンロードされた場合、上記フォルダからダウンロードしたファイルを消すと治る事があります
(既にダウンロード判定された場合、キャッシュが使用される為、消さないと治らない事がある)

 

PackageManagerが提供する機能を改造する

PackageManagerからダウンロードするスクリプトは基本的にReadOnlyです。ここで提供されているパッケージは全てのエディターからアクセスされているため、編集すると全てのプロジェクトが影響してしまい大惨事になります。

ただ、実際このPackageManagerで提供されている機能の大半は完全にC#で動作しておりUnityのフォルダルールに従って配置されているので、実は普通にプロジェクトの中にコピーしてしまえば編集可能になったりします。

かなりハック的なアプローチですが、本当に必要な場合は検討しても良いのかもしれません。
まぁ幾つかのプロジェクトで確実に必要そうな感じなので(例えば改造前提のLWRPなど)、その内ちゃんとしたアプローチが用意されそうな気がします。専用フォルダに改造可能なパッケージをコピーするとか

AssetStoreのパッケージもPackageManager経由で云々という話もUniteでされていたので、今PackageManagerに色々と労力を割くと後で泣きそうな予感も

 

関連

qiita.com

*1:AssetStoreでダウンロードしたパッケージをDドライブに保存するようにする 的なアプローチで変更は出来るかもしれませんが、機能としては用意されていません。