本記事はUnity Advent Calendar 2023 シリーズ2 21日目の記事です。
UnityでNuGet Galleryに公開されている.NET向けパッケージ(以下NuGetパッケージ)を使う場合、nugetコマンドでは管理できないためパッケージ(依存パッケージもすべて)を自分でダウンロードしてDLLを取り出し、Unityプロジェクト下に配置する必要があります。
その手間を省くためのソリューションとして代表的なものに、UnityNuGetとNuGetForUnityがあります。
UnityNuGetのほうが取り扱いは楽な反面、利用できるパッケージに制限があるなど、目的によってはNuGetForUnityのほうが便利なケースもあります。 双方の違いも含めて紹介します。
UnityNuGet
UnityNuGetは、Unityで利用可能なNuGetパッケージをUPMパッケージとしてラップした状態で提供してくれる、UPMパッケージレジストリです。 Unity 2019.1以降で利用できます。
レジストリは公開されているものをそのまま利用することも、自分の環境やDockerコンテナ上に立ち上げることもできます(コードはオープンソース)。
[2025/3/9 追記] UnityNuGetの公開レジストリ(Azureホスティング)停止を受け、OpenUPM でホスティングされるようになりました。
公開レジストリの利用方法
Package Managerウィンドウを使用する場合
Unityエディター上のPackage Managerウィンドウを使用する場合、次の手順でNuGetパッケージをインストールできます。
- UnityエディターのメニューからEdit > Project SettingsでProject Settingsウィンドウを開き、Package Managerタブを選択
- Scoped Registriesの下にある+ボタンをクリックし、Name・URL・Scope(s)を入力してSave
- Window > Package ManagerでPackage Managerウィンドウを開き、左上にあるレジストリ選択ドロップダウンでMy Registriesを選択
- 目的のNuGetパッケージを探して、Installボタンをクリック

Scoped Registriesの設定内容は次のとおりです。
- Name:
package.openupm.com(任意) [2025/3/9 変更] - URL:
https://package.openupm.com[2025/3/9 変更] - Scope(s):
org.nuget(Package Manager上の表示を絞り込みたければ細かく指定)
レジストリは unitynuget-registry.openupm.com でホスティングされ、package.openupm.com レジストリからアップリンクされているため、透過的に使用できます。 すでに package.openupm.com の設定がある場合は Scope(s) を追加するだけです。[2025/3/9 追記]
これで、NuGetパッケージの依存関係解決も行われ、必要なDLLがPackages下にUPMパッケージとしてインストールされます。
なお、Unity 2022.2未満の場合、次の操作でAssembly Version Validationを無効化する必要があります(2022.2以降はデフォルトが無効)。
- Project Settings > Player > Other Settings > Configurationを開き、Assembly Version Validationチェックボックスをoff

openupmコマンドを使用する場合
openupmコマンドでも次のようにレジストリを指定してインストールできます。
openupm add パッケージのID
UnityNuGetレジストリにアップリンクされているので、--registry 指定は不要になりました。 [2025/3/9 追記]
こちらもAssembly Version Validationの設定は必要です。
利用できるNuGetパッケージ
UnityNuGetで利用できるパッケージは登録制です。 registry.json ファイルに書かれているパッケージのみ利用できます。
.NET Standard 2.0と2.1のDLLが含まれるパッケージの場合、DLLのmetaファイルにConstraintsを設定してくれるので気にすることなく利用できるはずです。
Roslynアナライザも利用できますが、アナライザをビルドしたときのMicrosoft.CodeAnalysis.CSharpのバージョンに依存するため、インストールするバージョンを指定する必要がある場合もあります。 詳しくは次の記事を参照してください。
NuGet Galleryに公開されているRoslynアナライザの各バージョンがどのUnityバージョンで使用できるかを調査するツールおよびその結果を掲示するGitHubリポジトリを公開しましたので参考にしてください。[2026/1/17 追記]
パッケージの追加方法
利用したいパッケージがregistry.jsonにない場合、追加するPull Requestを送ります。 ただし追加できるパッケージは.NETStandard2.0をサポートしている必要があります。 また依存パッケージがある場合は依存関係すべてを追加する必要があります。
なお、Unityエディター上でしか動作しないパッケージにはdefineConstraints: ["UNITY_EDITOR"]を、Roslynアナライザの場合は"analyzer": trueを追加することを忘れないでください。
次のコマンドでテストを実行すると、依存関係も含めたバリデーションが行われます。
dotnet test src -c Release
ローカル環境でレジストリを起動する
Pull Requestを送る前に、手元でレジストリを起動して確認することもできます。 次のコマンドで起動できます。
cd examples/docker docker-compose up
ポート5000でアクセスできます。つまりレジストリURLはhttp://localhost:5000です。
またパッケージIDのprefixがorg.nugetでなく、org.customになります。
これらは docker-compose.yml で変更できます。
PRしたパッケージがOpenUPMから利用できるまで
リポジトリに送ったPRがマージされてからレジストリに公開されるまでは、次のステップがあります。
- UnityNuGet 側で tag が打たれると、toolワークフローが動作してDockerイメージをリリースします
- OpenUPM側で定期的にDockerイメージを取り込む処理があり、これに拾われるとレジストリに登録・公開されます。
なお、OpenUPMのWeb検索ではNuGetパッケージはヒットしません。
登録・公開されたかを知るには、openupm v org.nuget.パッケージ名 コマンドを使用します。[2026/1/17 追記]
NuGetForUnity
NuGetForUnityは、Unityプロジェクトにインストールして使用するオープンソースのエディター拡張です。 Unityエディター上で直接NuGet GalleryにあるNuGetパッケージをインストールできます。
一時期メンテナンスが止まっていましたが、2023年のはじめごろ再開されました。
NuGetForUnityのインストールと設定
まずNuGetForUnity自体をUPMパッケージとしてインストールします。
Package Managerウィンドウを使用する場合
Scoped Registriesにhttps://package.openupm.comを追加してopenupmからインストールできます。
細かい手順は割愛します。
openupmコマンドを使用する場合
次のコマンドでインストールできます。
openupm add com.github-glitchenzo.nugetforunity
バージョン管理システムのトラッキング除外設定
NuGetForUnityは、ダウロードして展開したNuGetパッケージの中身を/Assets/Packages/下に置きます。 リポジトリにDLLを入れたくない場合、これを.gitignoreなどでバージョン管理システムのトラッキングから除外しておきます。
ただし、プロジェクトにインストールしているNuGetパッケージの情報は/Assets/packages.configに保存されます。
ケースインセンシティブなOSで/Assets/Packages*と書いてしまうとこちらも除外されますので注意してください。
推奨する.gitignoreの記述は次の記事を参考にしてください。
NuGetパッケージのインストール
UnityエディターのメニューからNuGet > Manage NuGet PackagesでNuGet For Unityウィンドウが開きます。 インストールしたいパッケージを検索してInstallで依存関係含めインストールされます。

NuGetForUnityも、Roslynアナライザーに対応しています*1。 Unityプロジェクトで動作する条件についてはUnityNuGetと同様です。
パッケージのリストア
/Assets/Packages/下をバージョン管理していない場合でも、Unityエディターを起動したときに自動的にリストアしてくれます。 ただし、リストア前の時点でコンパイルエラーがあると実行されません。
継続的インテグレーション(CI)などではUnity起動前にリストアをCLIで実行するNuGetForUnity.Cliが利用できます。 dotnetサブコマンドとしてインストールして実行できます。
まとめ
メジャーなパッケージを簡単に使うならUnityNuGetがおすすめです。
UnityNuGetで提供されていないもの、DLLの設定を変えたい、また自作のパッケージをテストするといった用途であれば、NuGetForUnityをおすすめします。
宣伝
年末のコミックマーケット103(C103)にサークル「いか小屋」で出ます。 2日目(日曜日)東U44b、東2の真ん中あたりです。
新刊は『GitHub CopilotとのペアプロTDDでつくるローグライクRPG』。 人間がテストコードを書き、GitHub Copilotがプロダクトコード生成という分担でのペアプログラミング✕テスト駆動開発(TDD)でローグライクRPGをつくろう!という本です。
C103新刊『GitHub CopilotとのペアプロTDDでつくるローグライクRPG』
— Koji Hasegawa@C107 水曜 南i-17b (@nowsprinting) 2023年12月18日
まだ執筆中ですが間に合いそう
表紙は、きみかさん(@kimika127)によるユニティちゃんです! pic.twitter.com/0qggvIZGOM
既刊の在庫も持っていきます。
*1:私がやりました