Package Manager ウィンドウで作業するとき、複数のソース (レジストリ、ローカル フォルダー、.tgz ファイル、Git URL) からパッケージをインストールすることができます。しかし、Package Manager は、これらのソースからパッケージをシームレスにインストールします。ただし、Package Manager は、これらのソースからパッケージをシームレスにインストールしますが、最初に一連の計算を行って、どのバージョンをインストールするか、また、それをサポートするのにインストールが必要な他のパッケージやバージョンを決定する必要があります。
直接的な依存関係
Package Manager ウィンドウでインストールするパッケージバージョンを選択すると、プロジェクトマニフェスト に “依存関係” を追加することになります。これは “プロジェクトが動作するために特定のパッケージの特定のバージョンが必要である” という宣言です。プロジェクトに依存関係を追加するには、<project-root>/Packages/manifest.json
ファイルの dependencies プロパティに package-name@package-version
という形式でパッケージとバージョンへの参照を追加します。これは、(プロジェクトがこれに直接依存することから) “直接的” 依存関係と呼ばれます。
間接的な依存関係
パッケージも、機能するために他のパッケージを必要とすることがあります。これは “間接的” または “推移的” 依存関係と呼ばれます。パッケージの開発者は、開発中にこれらの依存関係をパッケージマニフェストファイルの dependencies プロパティに加えます (<package-root>/package.json
)。例えば、以下の図では、alembic@1.0.7
パッケージが timeline@1.0.0
パッケージに依存しているため、timeline パッケージは “間接的” 依存関係になります。一方、プロジェクトは cinemachine@2.6.0
と alembic@1.0.7
に依存しているため、これらは両方とも “直接的” 依存関係となります。
バージョンオーバーライド
依存関係としてパッケージのバージョンを追加した場合、そのバージョンは必ずしも Package Manager がインストールするバージョンではありません。これは、直接/間接を問わずプロジェクト内の全ての依存関係が考慮される必要があるためです。例えば、以下のケースでは、リクエストされた XR Plugin Management パッケージはバージョン 4.0.3 でしたが、情報メッセージ (B) が示しているように、別のパッケージがより高いバージョンに依存していたため、実際にインストールされたバージョンは 4.0.6 です。
依存関係グラフ
Package Manager は、一度に 1 つのパッケージバージョンしかインストールできないため、依存関係グラフ を構築する必要があります。これは、プロジェクトの全ての直接的依存関係と間接的依存関係のリストです。依存関係グラフは、各パッケージのどのバージョンをインストールするかを決定します。
ロックファイル
Package Manager は、全てのバージョン競合の解決に成功すると、解決結果を ロックファイル 内に保存します。これにより、決定性が確保され (したがって毎回同じパッケージが確実にインストールされるようになり)、依存関係グラフを再度計算するのにかかる時間とリソースが削減されます。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.