自作Packageをgithubから取得する
参考:
新しく自前のパッケージを作る時の流れ
公式的には2通りの方法がある
個人的には作ってる最中にUnityエディタ内で色々確認したい気がするので
「Creating a new embedded package」の方が良さげだった
「Creating a new embedded package」は何らかのUnityプロジェクト内のPackagesフォルダに今回作成するパッケージ用のフォルダを作成し、その中にpackage.jsonや実装等を置いていく方法
先にgithubなどにパッケージ用のリポジトリを作成しておいて、そのリポジトリを先程作成したフォルダにcloneする…という形にしておくと、実装・確認が済んだ後そのままcommitやpushに入れるので楽
パッケージの依存関係解決方法について
自作のPackageに、例えばUniRxだったりZenjectだったりが必要な場合
Packageそのものの設定、package.jsonに
パッケージのドメイン名(com.stevevermeulen.extenject など)
パッケージのバージョン
を記述する。
実際に、そのドメイン名及びバージョンを用いてどこのURLからパッケージを持ってくるのかはパッケージ側ではなくプロジェクト毎に設定する必要がある(※後述のgit urlでの解決は例外)。それがPackage/manifest.jsonに書くscopedRegistry。
以下に例としてUniRx、UniTask、Extenjectが欲しくて書いたscopedRegistryの設定を記載する
code:.json
"scopedRegistries": [
{
"name": "upm-packages",
"scopes": [
"com.stevevermeulen",
"dev.upm-packages",
"jp.cysharp"
]
}
]
scopesには必要なパッケージのドメイン名を書いておく必要がある。
複数のscopedRegistryがあった際に、一致度の高いものを優先して拾ってくるっぽい?
こうすると、例えばcom.stevevermeulen.extenjectはhttps://upm-packages.devから取得されるようになる。
パッケージをgithubから引っ張ってくる
2019.3の場合PackageManagerのUI経由でのgitからパッケージを取得する手段が用意されたので多少楽になっている
依存物がscopedRegistry経由ですべて解決できる場合はこれでも一応大丈夫なはず。
ssh接続でもちゃんと通る。
欲しいパッケージのリポジトリURLを突っ込むだけ。
問題は、パッケージ側(package.json)にgit urlを入れたものを使いたい場合。
ひとまず、Unityバージョンを一旦気にせずかつpackage managerのUIを用いた取得をしていこうとするなら以下のパッケージをそれぞれ入れてやっていくのが安定のように見える。
(パッケージの細かい使い方はREADME参照)
別に2019のUnityに下記パッケージを導入していても特にエラーが出たりはしないので、雑に突っ込んでおいても良いかも?
パッケージをpackage managerのUIを経由してgitから取得できるようにするもの
2019.3で使える機構と似たようなものだと思う(ちゃんと差異は見てない…)
こちらは2018でも使えるので、2018環境でmanifest.jsonを直接いじりたくない人は入れる
dependenciesに書かれた依存パッケージについて、gitのURLが記載されている場合にそれを解決できるようにするもの
パッケージのバージョンや取得場所について、scopedRegistry依存でなく直でgitのurlを書きたいニーズがある
そもそもscopedRegistryを気にしたい場面がそんな多いのかという話。
仕事でもない時は正直何も指定なんてしなくてもよしなに引っ張って来てほしい
だがまだ公式にデフォルトのサードパーティ向け領域は無い
2018.3段階でも2019.3段階でも現状gitのURLをpackage.json内のdependenciesに書いても解決出来ない
上記のパッケージを導入することでURLを記述しても依存関係解決が可能になる。
ちなみに、package.jsonはinspectorからもいじれるようになっているものの、これを入れてgit urlを使う形にしているとInvalid Dependency Versionエラーで怒られて編集が確定できなくなる。テキストエディタから直で操作する分には特に問題ないがいきなり見るとちょっとビックリするので注意。