Unity Package Managerとは
Unity 2018から搭載される予定のパッケージマネージャー。
例えばUnity IAPとかを導入したり、バージョン管理するのを簡単にできる。
多分見たほうが早いので、こんな感じ。
Window -> Package Managerで開ける。
まあ、普通にパッケージマネージャーですね。便利。
仕組み
Unity 2018でプロジェクトを作ると、 {プロジェクト名}/Package/manifest.json
というそれっぽいファイルがある。
試しにAsset Bundle BrowserをPackage Managerからインストールした後に内容を確認してみる。
{
"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/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/*
に展開される