【Unity】【Package Manager】自作PackageをGitリポジトリのサブフォルダに置けるようになってた(Unity2019.3.4から)

UnityのPackage Managerの自作PackageをGitリポジトリのサブフォルダに置けるようになってたという話です。

はじめに

UnityのPackage Managerの機能を使うと、自作のPackageをGitのリモートリポジトリに配置することができます。

今までは自作のPackageをGitに公開する際にはpackage.jsonリポジトリの直下に配置する必要がありました。
これは何かと不便だったのですが、いつの間にかサブフォルダにPackageを置くことができるようになっていたので方法を紹介します。

ちなみにこの内容については以下のフォーラムで議論されています。

https://forum.unity.com/threads/some-feedback-on-package-manager-git-support.743345/#post-5425311

マニュアルは以下のページに追記されています。

docs.unity3d.com

manifest.jsonの書き方

さて、まずリポジトリ直下に自作Packageを配置した場合には、manifest.jsonを以下のように記述することでインストールが行えます。

{
  "dependencies": {
    "com.harumak.example": "https://github.com/Haruma-K/Example.git"
  }
}

ここで、PackageをPackages/com.harumak.example配下に移動したとします。
この場合にはURLのクエリパラメータのpathにPackageまでの相対パスを与えることでインストールが行えます。

{
  "dependencies": {
    "com.harumak.example": "https://github.com/Haruma-K/Example.git?path=/Packages/com.harumak.example"
  }
}

バージョンやリビジョンを同時に指定したい場合には、アンカーをクエリパラメータの後に書きます。
ちなみにここでいうバージョンはGitのタグを表します。package.jsonに書かれた値を見るわけではないので注意してください。

{
  "dependencies": {
    "com.harumak.example": "https://github.com/Haruma-K/Example.git?path=/Packages/com.harumak.example#1.0.0"
  }
}

対応しているUnityバージョン

この機能はUnity2020で実装され、Unity2019.3.4f1にバックポートされました。

したがってそれ以前のUnityにも対応する場合には、リポジトリからローカルのPackagesフォルダにPackageだけをコピーした後、
以下のようにローカルパス指定を行うことでインストールを完了するように促す必要がありそうです。

{
  "dependencies": {
    "com.harumak.example": "file:com.harumak.example"
  }
}

関連

light11.hatenadiary.com

参考

https://forum.unity.com/threads/some-feedback-on-package-manager-git-support.743345/#post-5425311

docs.unity3d.com