まえがき
例のごとくこの記事は宣伝で、技術的なことは別に書いてます。そちらは以下の通り。
- GitHub Actions を使った Unity の自動テスト - Qiita
- OnGUI() で重い処理をしたい - Qiita
- Unity でコードから GUI を作る - Zenn
- Unity Package Manager (UPM) に対応した自作パッケージを公開する - Zenn
- Unity で Zip を扱う - Zenn
- Unity におけるマネージドプラグインの参照問題 - Zenn
- DocFX を用いた C# プロジェクトのドキュメント生成 - Zenn
背景
Unity のプロジェクトで、NuGet のパッケージを使用したいときは GlitchEnzo/NuGetForUnity を利用すれば基本的には問題ない。そう、基本的には。例えば、ネイティブプラグインには対応しておらず(issue にある通り、対応しなさそう)、パッケージの参照が違うバージョンであれば、問題のないバージョンの参照であってもエラーが発生する。そのため、私が使うには不十分であった。
そこで、私は NuGetForUnity が動作した後に処理をするようなエディタ拡張を考えたが、そもそも動作した後って取れなくない?(NuGetForUnity は .dll で配布されるため)と思い、どうせだからと一から開発することにした。
成果物
二か月でできた。(本業が大変だったから実質一か月だけど。)こんな感じ。kumaS-nu/NuGet-importer-for-Unity
概要
NuGet importer for Unity は高速で使いやすく、非常に強力に NuGet のパッケージを Unity へ導入できるようにするエディタ拡張です。 また、ネイティブプラグインに対しても完全に対応しております。 (GlitchEnzo/NuGetForUnity に影響を受けましたが一から作ってます。)
なんか英語の文章を翻訳した感じになってしまった。(-ω- ?)
特徴
- 非同期を活用した高速な動作
- 強力な依存関係解決
- ネイティブプラグインに対する完全な対応
- わかりやすいUI
- UPM対応・unitypackageあり
- GlitchEnzo/NuGetForUnityとの互換性あり
基本的にはこんな感じです。UI については Visual Studio 付属の NuGet をパク参考にしました。あと、やっぱり NuGet のパッケージ情報(特にアイコン)を取得する速度がネックだったので非同期にしました。(UI に非同期のところを入れるのはちょっと気をつけないといけなかったりする。)
導入法
UPMを使っても、unitypackage で導入してもいいです。unitypackage の方は dll 化した状態でパッケージにしてます。具体的な方法は Readme を読んでください。
あとがき
今から Unity のプロジェクトに NuGet のパッケージをインポートするならぜっっっっったいこっちの方がいいです!!!!!サクサク動くし、UI 親切だし、問題なく動くので。(NuGet のパッケージを作る・公開するのであればどうぞ GlitchEnzo/NuGetForUnity をお使いください。)
感想とか Twitter とかでつぶやいてこのプロジェクト拡散してくれると嬉しいです!