Version: Unity 6.0 (6000.0)
言語 : 日本語
依存関係と競合の解決
埋め込みの依存関係

解決と競合

パッケージをプロジェクトマニフェストに追加すると、Unity はそのパッケージをプロジェクトの依存関係 (直接的な依存関係) と見なします。ただし、パッケージは他のパッケージとの依存関係を持つこともでき、その場合、そのパッケージを必要とするすべてのプロジェクトで間接的な依存関係が作成されます。

ほとんどのプロジェクトでは、ゲームやアプリケーションを開発するために複数のパッケージが必要であるため、Package Manager はレジストリから取得するリクエストされたすべてのパッケージバージョンを (直接的なのか間接的なのか) 評価し、それらのパッケージバージョンのうちインストールするパッケージを決定する必要があります。これを行うために、プロジェクトの 直接的および間接的な依存関係 をすべて満たすパッケージのセットを計算します。プロジェクトの依存関係から開始し、間接的な各依存関係を再帰的に調べ、すべての依存関係情報を収集してから、競合なく依存関係の要件を満たすパッケージのセットを選択します。例えば、この依存関係図は、4 つの直接的な依存関係とそのすべての間接的な依存関係を持つプロジェクトを表しています。

プロジェクトの直接的および間接的なパッケージの依存関係図
プロジェクトの直接的および間接的なパッケージの依存関係図

以下の例の説明:

  • 水色のノードは、プロジェクトの直接の依存関係を表しています。
  • 青のノードは、このプロジェクト内で間接的な依存関係である同じパッケージとバージョンを示しています。
  • 赤いノードは、同じパッケージの 2 つの異なるバージョンを示しており、これは競合しています。

ノート: バージョンで宣言されたパッケージの依存関係のみ解決する必要があります。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.11collections@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 パッケージの依存関係を満たします。

この依存関係図では、青いノードは、Package Manager が選択したバージョンを示しています。
この依存関係図では、青いノードは、Package Manager が選択したバージョンを示しています。




  • Unity 2019.4で追加された新しいパッケージ依存関係ソルバー (SAT) NewIn20194


依存関係と競合の解決
埋め込みの依存関係