Ketika Anda bekerja di jendela Paket Manager, Anda dapat menginstal paket dari beberapa sumber (a registry, folder lokal atau tarball, dan Git URL). Namun, sementara paket Manager menginstal paket dari sumber ini mulus, pertama harus membuat serangkaian perhitungan untuk memutuskan versi mana untuk menginstal, dan paket dan versi lain untuk menginstal untuk mendukungnya.
Direct dependencies
Ketika Anda memilih versi paket untuk menginstal melalui jendela Paket Manager, Anda menambahkan "tergantungan" ke manifestasi proyekSetiap 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 Anda. Ini adalah pernyataan bahwa Anda memerlukan versi tertentu dari paket tertentu untuk proyek untuk bekerja. Untuk menambahkan ketergantungan pada proyek Anda, Anda menambahkan referensi ke paket dan versi dalam bentuk package-name@package-version
ke properti dependencies dari file <project-root>/Packages/manifest.json
. Ini disebut dependensi “arah” karena proyek Anda langsung tergantung pada mereka.
Indirect dependencies
Paket juga dapat memerlukan paket lain untuk bekerja. Ini disebut "indirect", atau transmisikan, ketergantungan. Pengembang paket menambahkan ini ke properti dependencies dari file manifestasi paket selama pengembangan (<package-root>/package.json
). Misalnya, dalam diagram di bawah ini, paket alembic@1.0.7
memiliki ketergantungan pada paket timeline@1.0.0
, sehingga paket timeline adalah “indirect ”dependency. Di sisi lain, proyek memiliki ketergantungan pada paket cinemachine@2.6.0
dan alembic@1.0.7
, sehingga mereka adalah ketergantungan "arah".
Version overrides
Ketika Anda menambahkan versi paket sebagai ketergantungan, versi itu tidak tentu versi yang diinstal Manajer Paket, karena harus mempertimbangkan semua ketergantungan dalam proyek Anda, apakah langsung atau tidak langsung. Misalnya, dalam kasus ini, paket Pengaturan Manager yang diminta adalah versi 1.0.1, tetapi versi yang diinstal sebenarnya versi 1.0.3 karena paket lain tergantung pada versi yang lebih tinggi, seperti yang ditunjukkan dalam pesan informasi (B):
Dependency graph
Manajer Paket hanya dapat menginstal satu versi paket pada waktu, sehingga harus membangun grafik ketergantungan, yang merupakan daftar setiap ketergantungan langsung dan tidak langsung untuk proyek. Grafik ketergantungan menentukan versi dari setiap paket untuk menginstal.
Lock file
Ketika Manajer Paket berhasil menyelesaikan semua konflik versi, itu menghemat resolusi di lock file untuk memastikan determinisme (sehingga paket yang sama dipasang setiap kali), dan untuk mengurangi jumlah waktu dan sumber daya yang dibutuhkan untuk memperingatkan grafik ketergantungan lagi.