Pendaftaran Lingkup
Kunci file

Resolusi dan konflik

Ketika Anda menambahkan paket ke project manifestSetiap proyek Unity memiliki manifestasi proyek, yang bertindak sebagai titik masuk untuk Manajer Paket. File ini harus tersedia di direktori <project>/Packages. Manajer Paket menggunakannya untuk mengkonfigurasi banyak hal, termasuk daftar dependensi untuk proyek itu, serta repositori paket untuk permintaan. More info
Lihat di Glossary
, Unity menganggap bahwa paket dependencyDalam konteks Manajer Paket, ketergantungan adalah versi paket khusus yang diperlukan proyek atau paket lain untuk bekerja. Ketergantungan dinyatakan dalam bentuk package_name@package_version. Proyek dan paket menggunakan properti dependencies dalam manifestasi mereka untuk menentukan set paket yang mereka butuhkan. More info
Lihat di Glossary
proyek (ketergantungan langsung). Namun, paket juga dapat memiliki ketergantungan pada paket lain, yang membuat indirect dependenciesKetergantungan indirect, atau transitif terjadi ketika proyek Anda meminta paket yang sendiri “tergantung pada” paket lain. Misalnya, jika proyek Anda tergantung pada paket alembic@1.0.7 yang pada gilirannya tergantung pada paket timeline@1.0.0, maka proyek Anda memiliki ketergantungan langsung pada Alembic dan ketergantungan tidak langsung pada Timeline. More info
Lihat di Glossary
dalam setiap proyek yang membutuhkan paket tersebut.

Karena sebagian besar proyek membutuhkan lebih dari satu paket untuk mengembangkan permainan dan aplikasi, Manajer Paket harus mengevaluasi semua versi paket yang diminta untuk mengambil dari registry (baik langsung atau tidak langsung), dan memutuskan mana di antara versi paket untuk menginstal. Untuk melakukan ini, komputasi seperangkat paket yang memuaskan semua ketergantungan langsung dan tidak langsung dalam proyek, dimulai dengan ketergantungan proyek dan bergantung pada setiap ketergantungan tidak langsung, mengumpulkan semua informasi ketergantungan, kemudian memilih satu set paket yang memenuhi persyaratan ketergantungan tanpa konflik. Misalnya, grafik ketergantungan ini mewakili proyek dengan empat direct dependenciesKetergantungan direct terjadi ketika proyek Anda “permintaan” versi paket tertentu. Untuk membuat ketergantungan langsung, Anda menambahkan paket dan versi ke properti dependencies dalam manifestasi proyek Anda (diekspresikan dalam bentuk package_name@package_version). More info
Lihat di Glossary
dan semua ketergantungan tidak langsung mereka:

A graph of direct and indirect package dependencies for a project
Grafik ketergantungan paket langsung dan tidak langsung untuk proyek

Dalam contoh ini:

  • Node biru ringan mewakili ketergantungan langsung proyek.
  • Node biru gelap menunjukkan paket dan versi yang sama dengan ketergantungan tidak langsung dalam proyek ini.
  • Node merah menunjukkan dua versi paket yang berbeda, yang merupakan konflik.

Note: Hanya ketergantungan paket yang diumumkan dengan versi harus diselesaikan. Paket Manager memilih paket yang dipasang dari sources lain, seperti paket tertanamPaket embedded adalah paket yang Anda simpan di bawah direktori Packages di akar proyek Unity. Ini berbeda dari sebagian besar paket yang Anda unduh dari server paket. More info
Lihat di Glossary
, dan dependensi yang diumumkan dengan jalan lokal, Git URLs, dan paket built-in atas dependensi berbasis versi.

Memilih solusi terbaik

Tergantung pada set paket yang didefinisikan dalam manifestasi proyek, itu bisa memakan waktu lama untuk mengevaluasi semua kombinasi paket yang mungkin: proyek berpotensi tergantung pada ratusan paket, masing-masing yang tergantung pada ratusan paket lain, yang paling membutuhkan versi yang berbeda.

Kunci file dan resolusi Login

Untuk memberikan solusi yang paling efisien, Manajer Paket memprioritaskan versi paket yang sebelumnya digunakan dengan melacaknya dalam lock file. Ini menjamin bahwa resolusi ketergantungan berikutnya menggunakan hasil input yang sama dalam output yang sama. Ini juga meminimalkan operasi memakan waktu seperti mengunduh, mengekstrak, atau menyalin paket.

Kadang-kadang, Manajer Paket tidak dapat menemukan solusi yang hanya mencakup paket yang terkunci. Dalam hal ini, Manajer Paket menggunakan solusi dengan peningkatan risiko paling sedikit, memilih peningkatan patch lebih dari peningkatan minor atau besar, dan peningkatan minor atas peningkatan utama secara default. Namun, Anda dapat menyesuaikan betapa agresif Anda ingin Manajer Paket untuk saat mempertimbangkan versi yang lebih tinggi dengan properti Sitemap Login.

Example

Dalam contoh ini, ada beberapa versi paket berikut yang diminta:

  • burst@1.2.2burst@1.3.0-preview.3 (twice) dan
  • collections@0.5.1-preview.11 dan collections@0.5.2-preview.8
  • jobs@0.2.4-preview.11jobs@0.2.5-preview.20 (twice) dan

Menggunakan set dependensi direct dan indirect, Manajer Paket memilih versi tertinggi dari paket burst (burst@1.3.0-preview.3), yang memuaskan ketergantungan paket collections@0.5.2-preview.8:

In the dependency graph, the blue nodes indicate which versions the Package Manager selected
Dalam grafik ketergantungan, node biru menunjukkan versi mana Manajer Paket yang dipilih




  • Paket baru ketergantungan pemecahan (SAT) ditambahkan dalam Unity NewIn20194


Pendaftaran Lingkup
Kunci file