Posted at

Unity Package Managerについて

More than 1 year has passed since last update.


Unity Package Managerとは

Unity 2018から搭載される予定のパッケージマネージャー。

例えばUnity IAPとかを導入したり、バージョン管理するのを簡単にできる。

多分見たほうが早いので、こんな感じ。

Window -> Package Managerで開ける。

image.png

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


仕組み

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!)

image.png

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

つまり、パッケージは常にグローバルな場所にインストールされます。プロジェクトのディレクトリ内にはmanifest.jsonしかありません。

(わざわざPackageというディレクトリを用意しているのを見ると、プロジェクトディレクトリ以下にインストールするオプションもそのうち用意されそうな予感)

プロジェクトを開いた時にmanifest.jsonに書かれたパッケージが自身のマシンにインストールされていない場合、自動的にインストールされます。

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

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


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

多分そのうち自作パッケージが配布できるようになりそうな感じなので、パッケージの作り方について。

このあたりを読めば良さそう。

https://docs.unity3d.com/Packages/com.unity.package-manager-ui@1.8/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/* に展開される