はじめに
Package Managerでパッケージの導入が楽になったのでよく使うライブラリでも使えないかと調べた所、各リポジトリにissueは立っているものの開発元はまだ対応していません。
- https://github.com/svermeulen/Extenject/issues/24
- https://github.com/neuecc/UniRx/issues/427
- https://github.com/Cysharp/UniTask/issues/25
ですが有志がUPM対応したりレジストリを建てたりしているのでそれを利用する方法をまとめました。
有志がUPM化したものを利用
ExtenjectとUniRxはissueにもコメントされていたものです。UniTaskはUPMに対応するPull Requestのリポジトリを利用できそうです。
{
"dependencies": {
"com.svermeulen.extenject": "https://github.com/starikcetin/Extenject.git#9.1.0",
"com.neuecc.unirx": "https://github.com/starikcetin/UniRx.git#7.1.0",
"com.cysharp.unitask": "https://github.com/twksos/UniTask.git#upm-1.2.0",
...
}
}
Unofficial Unity Package Manager Registryを利用
もんりぃ先生(@monry)が建てたUnofficial Unity Package Manager Registryにもパッケージが登録されているのでこちらを利用する事もできます。
詳細は以下のリンクをご覧下さい。
- Unofficial Unity Package Manager Registry を建ててみました
- パッケージを利用する
- Unofficial Unity Package Manager Registry
こっちはパッケージを利用する方法に従ってmanifest.json
に以下の内容を追加します。
{
"scopedRegistries": [
{
"name": "Unofficial Unity Package Manager Registry",
"url": "https://upm-packages.dev",
"scopes": [
"com.stevevermeulen",
"jp.cysharp"
]
}
],
"dependencies": {
"com.stevevermeulen.extenject": "9.1.0",
"jp.cysharp.unirx": "7.1.0",
"jp.cysharp.unitask": "1.0.0",
...
}
}
更にExtenjectのバージョンの枝番に-5
、scopes
にdev.upm-packages
を追加するとテスト用のMoqとNSubstituteを一緒にインストールできます。
{
"scopedRegistries": [
{
"name": "Unofficial Unity Package Manager Registry",
"url": "https://upm-packages.dev",
"scopes": [
"com.stevevermeulen",
"jp.cysharp",
"dev.upm-packages"
]
}
],
"dependencies": {
"com.stevevermeulen.extenject": "9.1.0-5",
"jp.cysharp.unirx": "7.1.0",
"jp.cysharp.unitask": "1.0.0",
...
}
}
Path query parameter (Subfolder)
Unity2020.1a21とUnity2019.3.4f1からpackage.json
をサブフォルダに配置できるようになりました。既存構成のままupm化できるようになったので開発元に追加されれば利用できるようになります。
現状、Extenjectは以下のように指定すればPackage Managerから扱えますがバグがありコンパイルエラーになります。
{
"dependencies": {
"com.svermeulen.extenject": "https://github.com/svermeulen/Extenject.git?path=/UnityProject/Assets/Plugins/Zenject",
...
}
}
まだpackage.json
が追加された後にタグが作られてませんが以下のようにハッシュを直接指定すると固定できます。
{
"dependencies": {
"com.svermeulen.extenject": "https://github.com/svermeulen/Extenject.git?path=/UnityProject/Assets/Plugins/Zenject#a955dd60be11d9a1f92080cda1d87e425c519072",
...
}
}
https://forum.unity.com/threads/some-feedback-on-package-manager-git-support.743345/#post-5425311
Unity 2019.3.4f1 から Unity Package Manager が「Git リポジトリのルート以外に package.json がある場合」もサポートしてくれるようになりました。https://t.co/gChvsXmgjb
— もんりぃ先生 (@monry) March 6, 2020
こんな感じに?path=...
とパスを指定してあげれば良いようです。
(内部的に clone してから当該パス以下を読んでる?)
最後に
どちらの方法も一次配布元ではないのでいつまで追従するのか不安があります。
また、Unofficial Unity Package Manager Registryのパッケージはそれに加えて一旦ダウンロードしないと内容が分からないので差分が分からないのと誰がアップロードしたのか分からない不安さがあります。
この辺りを踏まえて便利に利用しましょう。
Top comments (0)