【Unity】Package Managerとは?Unityの追加機能をサクッとインストールする

UnityのPackage Managerを使って追加機能をインストールする方法をまとめました。

Unity2018.4.0

Package Managerとは?

Package Managerは、Unity公式の追加機能などをインストールするための機能です。

例えばCinemachineなどは以前はAsset Storeを通して配布されていましたが、
この方法だとプロジェクトごとにインストールが必要であったり、
バージョン管理がしづらかったりといったデメリットがありました。

Package Managerの登場によりこれらのデメリットがなくなり、追加機能が管理しやすくなりました。
今後は基本的にこのPackage Managerで追加機能などが配布されていくものと思われます。

ちなみにCinemachineのようにAsset StoreからPackage Managerに移動したものに関しては、
Asset Storeの説明欄にPackage Managerから最新版をインストールするように注意書きがされています。

assetstore.unity.com
(そのうちAsset Storeからも消えるのかもしれません)

パッケージをインストールする・削除する

それでは実際にパッケージをインストールしてみます。
まず、Window > Package ManagerからPackage Managerのウィンドウを開きます。

f:id:halya_11:20190526185616p:plain

このようなウィンドウが開かれます。

f:id:halya_11:20190526190016p:plain

次にインストールしたいパッケージの名前を検索バーに入力します。
今回はAsset Bundle Browserをインストールしてみます。

f:id:halya_11:20190526190322p:plain

お目当てのパッケージが見つかったら、Installボタンからインストールを開始します。

f:id:halya_11:20190526190408p:plain

InstallボタンがUp to dateボタンに切り替わったらインストール完了です。

f:id:halya_11:20190526190536p:plain

また、間違えてインストールしてしまったり、開発の途中で不要になったパッケージは
Removeボタンを押せばプロジェクトから削除できます。

f:id:halya_11:20190526190624p:plain

バージョンを指定してインストールする

上記の手順でインストールを行うと、デフォルトの設定ではそのパッケージの最新バージョンがインストールされます。
しかし最新バージョンでうまく動かなかった場合など、古いバージョンをインストールしたいケースがあります。
そのような場合にはInstallボタンあるいはUp to dateボタンの右側のバージョンをクリックし、All versionsから古いバージョンを選択します。

f:id:halya_11:20190526190657p:plain

あとは通常のインストールやアップデート時と同じように左側のボタンを押すだけです。

f:id:halya_11:20190526193119p:plain

プレビュー版のパッケージをインストールする

パッケージの一覧には、デフォルトではプレビュー版のパッケージは出てきません。
例えばUnity2018.4.0では、Memory Profilerを検索しようとしてもNo resultsという表示が出てしまいます。

f:id:halya_11:20190526193444p:plain

プレビュー版のパッケージを検索結果に表示するためには、
ツールバーのAdvancedドロップダウンからShow Preview Packagesを有効にします。

f:id:halya_11:20190526193554p:plain

するとプレビュー版のパッケージも表示され、インストールできるようになります。

f:id:halya_11:20190526193634p:plain

ドキュメントなどを見る

インストールしたパッケージのドキュメントはたいていPackage Managerからリンクされています。
また、バージョンごとのChange Logやライセンス情報もここからリンクされています。

f:id:halya_11:20190526195231p:plain

新しいパッケージをインストールする際にはチェックするようにしましょう。

インストールしたパッケージを管理するjson

さて、今このプロジェクトどのパッケージが組み込まれているのかはjsonファイルによって管理されています。
プロジェクト直下のPackages/manifest.jsonを開いてみます。

{
  "dependencies": {
    "com.unity.ads": "2.0.8",
    "com.unity.analytics": "3.2.2",
    "com.unity.assetbundlebrowser": "1.7.0",
    "com.unity.collab-proxy": "1.2.15",
    "com.unity.memoryprofiler": "0.1.0-preview.6",
    "com.unity.package-manager-ui": "2.0.7",
    "com.unity.purchasing": "2.0.3",
    "com.unity.textmeshpro": "1.3.0",
    "com.unity.modules.ai": "1.0.0",
    "com.unity.modules.animation": "1.0.0",
    "com.unity.modules.assetbundle": "1.0.0",
    "com.unity.modules.audio": "1.0.0",
    "com.unity.modules.cloth": "1.0.0",
    "com.unity.modules.director": "1.0.0",
    "com.unity.modules.imageconversion": "1.0.0",
    "com.unity.modules.imgui": "1.0.0",
    "com.unity.modules.jsonserialize": "1.0.0",
    "com.unity.modules.particlesystem": "1.0.0",
    "com.unity.modules.physics": "1.0.0",
    "com.unity.modules.physics2d": "1.0.0",
    "com.unity.modules.screencapture": "1.0.0",
    "com.unity.modules.terrain": "1.0.0",
    "com.unity.modules.terrainphysics": "1.0.0",
    "com.unity.modules.tilemap": "1.0.0",
    "com.unity.modules.ui": "1.0.0",
    "com.unity.modules.uielements": "1.0.0",
    "com.unity.modules.umbra": "1.0.0",
    "com.unity.modules.unityanalytics": "1.0.0",
    "com.unity.modules.unitywebrequest": "1.0.0",
    "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
    "com.unity.modules.unitywebrequestaudio": "1.0.0",
    "com.unity.modules.unitywebrequesttexture": "1.0.0",
    "com.unity.modules.unitywebrequestwww": "1.0.0",
    "com.unity.modules.vehicles": "1.0.0",
    "com.unity.modules.video": "1.0.0",
    "com.unity.modules.vr": "1.0.0",
    "com.unity.modules.wind": "1.0.0",
    "com.unity.modules.xr": "1.0.0"
  }
}

このように、プロジェクトで使っているパッケージの一覧とそのバージョンが記載されています。
先ほどインストールしたMemory Profilerもインストールされていることがわかります。

インストールされたパッケージが配置されるフォルダ

インストールされたパッケージの実態(dllファイルとかcsとか)は、プロジェクトをまたいで共用されます。
そのためこれらのファイルはプロジェクト内には存在しません。
Windowsの場合は、下記のようにAppDataの中にあることが多いと思います。

C:\Users\User Name\AppData\Local\Unity\cache

このcacheフォルダ配下のnpmフォルダに展開前のファイルが、pakcagesフォルダに展開後のファイルが配置されます。
試しに展開後のMemory Profilerのフォルダを見てみます。

f:id:halya_11:20190526194606p:plain

色々なファイルやフォルダが展開されていることがわかりました。
プロジェクトからはこれらを参照して使っています。

参考

docs.unity3d.com