Unity Package Managerについて


Unity Package Managerとは

Unity 2018から搭載される予定のパッケージマネージャー。
例えばUnity IAPとかを導入したり、バージョン管理するのを簡単にできる。
多分見たほうが早いので、こんな感じ。
Window -> Package Managerで開ける。

まあ、普通にパッケージマネージャーですね。便利。

仕組み

Unity 2018でプロジェクトを作ると、 {プロジェクト名}/Package/manifest.json というそれっぽいファイルがある。
試しにAsset Bundle BrowserをPackage Managerからインストールした後に内容を確認してみる。

manifest.json
{
  "dependencies": {
    "com.unity.assetbundlebrowser": "1.5.0"
  }
}

プロジェクトが依存するパッケージがここに記されるような感じ。
RubyGemsにおけるGemfile、PHPのComposerにおけるcomposer.json、node.jsのnpmにおけるmanifest.jsonですね。
というか、npmと一緒な雰囲気ですね。多分内部でnpmが走ってます。

DLされたパッケージの実体は、Macでは ~/Library/Unity/cache/npm/packages.unity.com/* にあります。(npm!)

パッケージが展開されたものは ~/Library/Unity/cache/packages/packages.unity.com/* にあります。ソースが見たい場合はこっち。

つまり、パッケージは常にグローバルな場所にインストールされます。プロジェクトのディレクトリ内にはmanifest.jsonしかありません。
(わざわざPackageというディレクトリを用意しているのを見ると、プロジェクトディレクトリ以下にインストールするオプションもそのうち用意されそうな予感)

プロジェクトを開いた時にmanifest.jsonに書かれたパッケージが自身のマシンにインストールされていない場合、自動的にインストールされます。
そのため、外部(Githubなど)から持ってきたプロジェクトでも自動的にパッケージの依存関係が解決されインストールされるようになっています。

ちなみに、プロジェクトを開いた状態でmanifest.jsonを直接編集して保存すると、勝手に再読込してパッケージをインストールしてくれます。

自作パッケージを配布したい場合

多分そのうち自作パッケージが配布できるようになりそうな感じなので、パッケージの作り方について。
このあたりを読めば良さそう。
https://docs.unity3d.com/Packages/[email protected]/manual/index.html#PackManManifestsPackage

まとめ

  • Unity 2018からパッケージマネージャーが搭載される
  • manifest.jsonに依存関係が記述される
  • プロジェクト起動時に自動的にmanifest.jsonを読み込み、依存するパッケージをインストールしてくれる
  • manifest.jsonを直接編集すると、自動的に再読込してパッケージをインストールしてくれる
  • パッケージは ~/Library/Unity/cache/npm/packages.unity.com/* にインストールされる
  • パッケージの中身は ~/Library/Unity/cache/packages/packages.unity.com/* に展開される