Manajer Paket Persatuan

Unity merupakan platform yang sudah ada cukup lama dan terus berkembang. Namun, saat mengerjakan beberapa proyek secara bersamaan, Anda masih mungkin mengalami kesulitan dalam menggunakan sumber umum (.cs), perpustakaan (.dll), dan aset lainnya (gambar, suara, model, prefab). Pada artikel ini kita akan berbicara tentang pengalaman kami dengan solusi asli untuk masalah Unity.

Manajer Paket Persatuan

Metode Distribusi Sumber Daya Bersama

Ada lebih dari satu cara untuk menggunakan sumber daya bersama untuk proyek yang berbeda, namun masing-masing pendekatan memiliki pro dan kontra.

1. Duplikasi - kami menduplikasi sumber daya antar proyek β€œdengan tangan.”

Pro:

  • Cocok untuk semua jenis sumber daya.
  • Tidak ada masalah ketergantungan.
  • Tidak ada masalah dengan GUID aset.

Cons:

  • Repositori raksasa.
  • Tidak ada kemungkinan membuat versi.
  • Kesulitan melacak perubahan pada sumber daya bersama.
  • Kesulitan memperbarui sumber daya bersama.

2. Submodul Git β€” distribusi sumber daya bersama melalui submodul eksternal.

Pro:

  • Anda dapat bekerja dengan sumbernya.
  • Anda dapat mendistribusikan aset.
  • Tidak ada masalah ketergantungan.

Cons:

  • Diperlukan pengalaman Git.
  • Git tidak terlalu bersahabat dengan file biner - Anda harus menghubungkan LFS.
  • Kontrol akses untuk repositori.
  • Kesulitan dalam meningkatkan dan menurunkan versi.
  • Tabrakan GUID mungkin terjadi dan tidak ada perilaku yang jelas di pihak Unity untuk mengatasinya.

3. NuGet - distribusi perpustakaan bersama melalui paket NuGet.

Pro:

  • Pekerjaan yang nyaman dengan proyek yang tidak bergantung pada Unity.
  • Pembuatan versi dan resolusi ketergantungan yang mudah.

Cons:

  • Unity tidak dapat bekerja dengan paket NuGet secara langsung (di GitHub Anda dapat menemukan NuGet Package Manager untuk Unity, yang memperbaikinya, tetapi ada beberapa perbedaan).
  • Kesulitan dalam mendistribusikan jenis aset lainnya.

4. Unity Package Manager - distribusi sumber daya bersama melalui solusi asli untuk Unity.

Pro:

  • Antarmuka asli untuk bekerja dengan paket.
  • Perlindungan terhadap penimpaan file .meta dalam paket karena konflik GUID.
  • Kemungkinan membuat versi.
  • Kemampuan untuk mendistribusikan semua jenis sumber daya untuk Unity.

Cons:

  • Konflik GUID masih bisa terjadi.
  • Tidak ada dokumentasi untuk implementasi.

Metode terakhir ini memiliki lebih banyak kelebihan daripada kekurangan. Namun, sekarang ini tidak terlalu populer karena kurangnya dokumentasi, dan oleh karena itu kami akan membahasnya secara detail.

Manajer Paket Persatuan

Unity Package Manager (UPM) adalah alat manajemen paket. Itu ditambahkan di Unity 2018.1 dan hanya digunakan untuk paket yang dikembangkan oleh Unity Technologies. Namun, mulai versi 2018.3, paket khusus dapat ditambahkan.

Manajer Paket Persatuan
Antarmuka Manajer Paket Unity

Paket-paket tersebut tidak berakhir di sumber proyek (direktori Aset). Mereka berada di direktori terpisah %projectFolder%/Library/PackageCache dan tidak mempengaruhi proyek dengan cara apa pun, satu-satunya penyebutannya dalam kode sumber ada di file packages/manifest.json.

Manajer Paket Persatuan
Paket dalam sistem file proyek

Sumber paket

UPM dapat menggunakan beberapa sumber paket:

1. Sistem file.

Pro:

  • Kecepatan implementasi.
  • Tidak memerlukan alat pihak ketiga.

Cons:

  • Kesulitan dalam membuat versi.
  • Akses bersama ke sistem file diperlukan untuk semua orang yang bekerja dengan proyek ini.

2. Repositori Git.

Pro:

  • Yang Anda butuhkan hanyalah repositori Git.

Cons:

  • Anda tidak dapat beralih antar versi melalui jendela UPM.
  • Tidak berfungsi dengan semua repositori Git.

3. repositori npm.

Pro:

  • Sepenuhnya mendukung fungsionalitas UPM dan digunakan untuk mendistribusikan paket resmi Unity.

Cons:

  • Saat ini mengabaikan semua versi string paket kecuali "-pratinjau".

Di bawah ini kita akan melihat implementasi UPM + npm. Bundel ini nyaman karena memungkinkan Anda bekerja dengan semua jenis sumber daya dan mengelola versi paket, dan juga sepenuhnya mendukung antarmuka UPM asli.

Anda dapat menggunakannya sebagai repositori npm Benar. Ada detailnya dokumentasi, dan hanya diperlukan beberapa perintah untuk menjalankannya.

Pengaturan lingkungan

Pertama, Anda perlu menginstal node.js.

Membuat paket

Untuk membuat paket, Anda perlu menempatkan file tersebut package.json, yang akan menjelaskannya, ke direktori dengan isi paket ini. Anda perlu melakukan hal berikut:

Masuk ke direktori proyek yang ingin kita jadikan paket.

Jalankan perintah npm init dan masukkan nilai yang diperlukan selama dialog. Untuk nama, tentukan nama dalam format domain terbalik, misalnya com.plarium.somepackage.
Untuk menampilkan nama paket dengan mudah, tambahkan properti displayName ke package.json dan isi.

Karena npm berorientasi pada js, file tersebut berisi properti main dan skrip yang tidak kita perlukan, yang tidak digunakan Unity. Lebih baik menghapusnya agar tidak mengacaukan deskripsi paket. File tersebut akan terlihat seperti ini:

  1. Masuk ke direktori proyek yang ingin kita jadikan paket.
  2. Jalankan perintah npm init dan masukkan nilai yang diperlukan selama dialog. Untuk nama, tentukan nama dalam format domain terbalik, misalnya com.plarium.somepackage.
  3. Untuk menampilkan nama paket dengan mudah, tambahkan properti displayName ke package.json dan isi.
  4. Karena npm berorientasi pada js, file tersebut berisi properti main dan skrip yang tidak kita perlukan, yang tidak digunakan Unity. Lebih baik menghapusnya agar tidak mengacaukan deskripsi paket. File tersebut akan terlihat seperti ini:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Buka Unity dan buat file .meta untuk package.json (Unity tidak melihat aset tanpa file .meta, paket untuk Unity dibuka hanya untuk dibaca).

Mengirim paket

Untuk mengirim paket, Anda perlu menjalankan perintah: npm publish --registry *адрСс Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²*.

Menginstal dan memperbarui paket melalui Unity Package Manager

Untuk menambahkan paket ke proyek Unity, Anda memerlukan:

  1. Tambahkan ke berkas manifest.json informasi tentang sumber paket. Untuk melakukan ini, Anda perlu menambahkan properti scopedRegistries dan menunjukkan cakupan dan alamat sumber di mana cakupan tertentu akan dicari.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрСс Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Buka Unity dan buka jendela Package Manager (bekerja dengan paket khusus tidak berbeda dengan bekerja dengan paket bawaan).
  3. Pilih Semua Paket.
  4. Temukan paket yang Anda butuhkan dan tambahkan.

Manajer Paket Persatuan

Bekerja dengan sumber dan debugging

Agar sumber dapat terhubung ke proyek, Anda perlu membuatnya Definisi Majelis untuk paketnya.

Menggunakan paket tidak membatasi opsi debugging Anda. Namun, ketika bekerja dengan paket di Unity, Anda tidak dapat membuka IDE dengan mengklik kesalahan di konsol jika kesalahan terjadi pada paket. Hal ini disebabkan oleh fakta bahwa Unity tidak melihat skrip sebagai file terpisah, karena ketika menggunakan Definisi Majelis, skrip tersebut dikumpulkan ke dalam perpustakaan dan disertakan dalam proyek. Saat bekerja dengan sumber dari suatu proyek, klik ke IDE tersedia.

Skrip dalam proyek dengan paket yang terhubung:

Manajer Paket Persatuan
Skrip dari paket dengan breakpoint yang berfungsi:

Manajer Paket Persatuan

Perbaikan mendesak pada paket

Paket Unity yang ditambahkan ke proyek bersifat read-only, namun dapat diedit di cache paket. Untuk melakukan ini, Anda perlu:

  1. Buka paket di cache paket.

    Manajer Paket Persatuan

  2. Buat perubahan yang diperlukan.
  3. Perbarui versi dalam file package.json.
  4. Kirim paket npm publish --registry *адрСс Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²*.
  5. Perbarui versi paket ke versi yang diperbaiki melalui antarmuka UPM.

Konflik impor paket

Konflik GUID berikut mungkin terjadi saat mengimpor paket:

  1. Paket – paket. Jika, saat mengimpor paket, ditemukan bahwa paket yang sudah ditambahkan berisi aset dengan GUID yang sama, aset dengan GUID yang cocok dari paket yang diimpor tidak akan ditambahkan ke proyek.
  2. Sebuah paket adalah sebuah proyek. Jika, saat mengimpor sebuah paket, ditemukan bahwa proyek tersebut berisi aset dengan GUID yang cocok, maka aset dari paket tersebut tidak akan ditambahkan ke proyek. Namun aset yang bergantung padanya akan mulai menggunakan aset dari proyek tersebut.

Mentransfer aset dari proyek ke paket

Jika Anda mentransfer aset dari proyek ke paket saat Unity terbuka, fungsinya akan dipertahankan, dan tautan dalam aset dependen akan mulai menggunakan aset dari paket tersebut.

Ini penting: Saat menyalin aset dari proyek ke paket, konflik β€œPaket - Proyek” yang dijelaskan pada bagian di atas akan terjadi.

Kemungkinan penyelesaian konflik

  1. Menugaskan ulang GUID menggunakan algoritme kami sendiri saat mengimpor semua aset untuk menghilangkan tabrakan.
  2. Menambahkan semua aset ke satu proyek dan kemudian membaginya menjadi beberapa paket.
  3. Membuat database berisi GUID seluruh aset dan melakukan validasi saat mengirim paket.

Kesimpulan

UPM adalah solusi baru untuk mendistribusikan sumber daya bersama di Unity, yang dapat menjadi alternatif yang layak untuk metode yang sudah ada. Rekomendasi yang diuraikan dalam artikel tersebut didasarkan pada kasus nyata. Kami harap Anda merasakan manfaatnya.

Sumber: www.habr.com

Tambah komentar