パッケージをプロジェクトマニフェストに追加すると、Unity はそのパッケージをプロジェクトの 依存関係 とみなします (直接依存)。ただし、 パッケージは他のパッケージへの依存関係を持つこともできます。それにより、そのパッケージを必要とするプロジェクトで間接的な依存関係が作成される場合があります。
ほとんどのプロジェクトでは、ゲームやアプリケーションを開発するために複数のパッケージを必要とします。Package Manager は、レジストリから取得するために要求されたすべてのパッケージバージョンを評価し(直接または間接を問わず)、それらのパッケージバージョンのうちどれをインストールするかを決定しなければなりません。これを行うためには、プロジェクトのすべての 直接と間接の依存関係 を満たす 1 組のパッケージを計算します。プロジェクトの依存関係から始めて、各間接的な依存関係を再帰的に調べ、すべての依存関係情報を収集してから、競合することなく依存関係の要件を満たす 1 組のパッケージを選択します。たとえば、この依存関係図は、4 つの直接依存関係とそれらのすべての間接依存関係を持つプロジェクトを表しています。
この例で
ノート: バージョンで宣言されたパッケージの依存関係のみ解決する必要があります。Package Manager は、他の ソース (例えば 組み込みパッケージ、ローカルパス、Git URL、ビルトイン パッケージで宣言された依存関係) からインストールされたパッケージを、バージョンに基づいた依存関係よりも優先して選択します。
プロジェクトマニフェストで定義されているパッケージのセットによって、考えられるすべてのパッケージの組み合わせを評価するには、長い時間がかかる可能性があります。1 つのプロジェクトが何百ものパッケージに依存する可能性があり、それぞれのパッケージが何百もの他のパッケージに依存し、そのほとんどが異なるバージョンを必要とします。
最も効率的なソリューションを提供するために、Package Manager は、ロックファイル で追跡することによって、以前に使用したパッケージのバージョンを優先します。これにより、同じ入力を使用した後続の依存関係の解決が、同じ出力になることが保証されます。また、パッケージのダウンロード、抽出、コピーなど、時間のかかる操作を最低限に抑えることができます。
Package Manager は、ロックされたパッケージのみを含む解決策を見つけられないことがあります。この場合、Package Manager は、デフォルトでは、マイナーまたはメジャーアップグレードよりもパッチアップグレードを優先し、メジャーアップグレードよりもマイナーアップグレードを優先するような、最もリスクの低いアップグレードを伴う解決策を使用します。ただし、resolutionStrategy プロパティを使用して、上位バージョンを検討する場合に Package Manager にどの程度積極的に対応させるかをカスタマイズすることができます。
この例では、以下のパッケージの複数のバージョンが必要です。
burst@1.2.2
(2 回) と burst@1.3.0-preview.3
collections@0.5.1-preview.11
と collections@0.5.2-preview.8
jobs@0.2.4-preview.11
(2 回) と jobs@0.2.5-preview.20
1 組の 直接的な依存関係と間接的な依存関係 を使用して、Package Manager はバーストパッケージの最高バージョン (burst@1.3.0-preview.3
) を選択し、これにより collections@0.5.2-preview.8
パッケージの依存関係を満たします。
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.