DEV Community

loading...

Extenject / UniRx / UniTaskをPackage Managerで扱いたい

shiena profile image KOGA Mitsuhiro Originally published at qiita.com ・2 min read

はじめに

Package Managerでパッケージの導入が楽になったのでよく使うライブラリでも使えないかと調べた所、各リポジトリにissueは立っているものの開発元はまだ対応していません。

ですが有志が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にもパッケージが登録されているのでこちらを利用する事もできます。
詳細は以下のリンクをご覧下さい。

こっちはパッケージを利用する方法に従って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のバージョンの枝番に-5scopesdev.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

image.png

最後に

どちらの方法も一次配布元ではないのでいつまで追従するのか不安があります。
また、Unofficial Unity Package Manager Registryのパッケージはそれに加えて一旦ダウンロードしないと内容が分からないので差分が分からないのと誰がアップロードしたのか分からない不安さがあります。
この辺りを踏まえて便利に利用しましょう。

Discussion (0)

Forem Open with the Forem app