Unity adalah platform yang telah ada sejak lama dan terus berkembang. Namun, bekerja di dalamnya dengan beberapa proyek secara bersamaan, Anda masih dapat menemui kesulitan dalam menggunakan sumber umum (.cs), perpustakaan (.dll) dan aset lainnya (gambar, suara, model, cetakan). Dalam artikel ini, kita akan berbicara tentang pengalaman kami bekerja dengan solusi asli untuk masalah seperti itu untuk Unity.
Metode Distribusi Sumber Daya Bersama
Ada lebih dari satu cara untuk menggunakan sumber daya bersama untuk proyek yang berbeda, tetapi masing-masing pendekatan memiliki pro dan kontra.
1. Duplikasi - βtanganβ duplikat sumber daya antar proyek.Pro:
- Cocok untuk semua jenis sumber daya.
- Tidak ada masalah ketergantungan.
- Tidak ada masalah dengan GUID aset.
Cons:
- Repositori raksasa.
- Tidak ada versi yang memungkinkan.
- Kesulitan melacak perubahan ke sumber daya bersama.
- Kesulitan memperbarui sumber daya bersama.
2. Git submodules - distribusi sumber daya bersama melalui submodules eksternal.Pro:
- Anda dapat bekerja dengan kode sumber.
- Aset dapat didistribusikan.
- Tidak ada masalah ketergantungan.
Cons:
- Dibutuhkan keterampilan git.
- Git tidak terlalu ramah dengan file biner - Anda harus menghubungkan LFS.
- Kontrol akses untuk repositori.
- Kesulitan dalam meningkatkan dan menurunkan.
- Tabrakan GUID dimungkinkan dan tidak ada perilaku yang tidak ambigu pada bagian Unity untuk menyelesaikannya.
3. NuGet - distribusi perpustakaan bersama melalui paket NuGet.Pro:
- Pekerjaan mudah dengan proyek-proyek yang tidak tergantung pada Unity.
- Versi yang nyaman dan resolusi dependensi.
Cons:
- Unity tidak tahu cara bekerja dengan paket NuGet di luar kotak (di GitHub Anda dapat menemukan Package Manager NuGet untuk Unity, yang memperbaikinya, tetapi ada beberapa nuansa).
- 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 menimpa file .meta dalam paket jika terjadi konflik GUID.
- Kemungkinan versi.
- Kemampuan untuk mendistribusikan semua jenis sumber daya untuk Unity.
Cons:
- Konflik GUID mungkin masih terjadi.
- Tidak ada dokumentasi untuk diimplementasikan.
Metode yang terakhir memiliki lebih banyak keuntungan daripada kerugian. Namun, saat ini tidak terlalu populer karena kurangnya dokumentasi, dan oleh karena itu kami akan membahasnya secara rinci.
Manajer Paket Persatuan
Unity Package Manager (selanjutnya disebut UPM) adalah alat manajemen paket. Itu ditambahkan di Unity 2018.1, dan itu hanya digunakan untuk paket yang dikembangkan oleh Unity Technologies. Namun, dimulai dengan versi 2018.3, menjadi mungkin untuk menambahkan paket khusus.
Antarmuka Manajer Paket UnityPaket tidak termasuk dalam sumber proyek (direktori Aset). Mereka terletak di direktori terpisah
%projectFolder%/Library/PackageCache
dan tidak mempengaruhi proyek dengan cara apa pun, hanya menyebutkan mereka dalam sumber-sumber dalam file
packages/manifest.json
.
Paket dalam sistem file proyekSumber Paket
UPM dapat menggunakan beberapa sumber paket:
1. Sistem file.Pro:
- Kecepatan implementasi.
- Tidak diperlukan alat pihak ketiga.
Cons:
- Kompleksitas pembuatan versi.
- Berbagi file diperlukan untuk semua orang yang bekerja dengan proyek ini.
2. Git repositori.Pro:
- Hanya repositori Git yang diperlukan.
Cons:
- Anda tidak dapat beralih antar versi melalui jendela UPM.
- Itu tidak bekerja dengan semua repositori Git.
3. repositori npm.Pro:
- Sepenuhnya mendukung fungsionalitas UPM dan digunakan untuk mendistribusikan paket Unity resmi.
Cons:
- Saat ini, ia mengabaikan semua versi string dari paket kecuali untuk "-preview".
Di bawah ini kita melihat implementasi UPM + npm. Bundel ini nyaman karena memungkinkan Anda untuk bekerja dengan segala jenis sumber daya dan mengelola versi paket, dan juga sepenuhnya mendukung antarmuka UPM asli.
Anda dapat menggunakan
Verdaccio sebagai repositori npm. Ada
dokumentasi terperinci untuk itu, dan hanya perlu beberapa perintah untuk meluncurkannya.
Pengaturan lingkungan
Pertama, Anda perlu menginstal
node.js.Pembuatan paket
Untuk membuat paket, Anda harus menempatkan file
package.json
, yang akan menggambarkannya, di direktori dengan isi paket ini. Anda perlu melakukan hal berikut:
- Pergi ke direktori proyek yang ingin kita buat paket.
- Jalankan perintah
npm init
dan masukkan nilai yang diperlukan selama dialog. Untuk nama, tentukan nama dalam format domain balik, misalnya paket com.plarium.somepackage
. - Untuk menampilkan nama paket dengan mudah, tambahkan properti
displayName
ke package.json
dan isi. - Karena npm berorientasi pada js, file berisi properti yang tidak perlu
main
dan scripts
yang tidak digunakan Unity. Lebih baik menghapusnya agar tidak mengacaukan deskripsi paket. File 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" }
- Buka Unity dan hasilkan file .meta untuk package.json (Unity tidak melihat aset tanpa file .meta, paket untuk Unity hanya terbuka untuk dibaca).
Pengiriman 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 perlu:
- Tambahkan informasi sumber paket ke file
manifest.json
. Untuk melakukan ini, tambahkan properti scopedRegistries
dan tentukan cakupan dan alamat sumber tempat lingkup spesifik akan dicari.
"scopedRegistries": [ { "name": "Main", "url": " ", "scopes": [ "com.plarium" ] } ]
- Pergi ke Unity dan buka jendela Package Manager (bekerja dengan paket khusus tidak berbeda dengan bekerja dengan paket bawaan).
- Pilih Semua Paket.
- Temukan paket yang Anda butuhkan dan tambahkan.
Bekerja dengan sumber dan debugging
Agar sumber terhubung ke proyek, Anda harus membuat
Definisi Majelis untuk paket tersebut.
Menggunakan paket tidak membatasi kemampuan debug. Namun, ketika bekerja dengan paket di Unity, Anda tidak bisa pergi ke IDE dengan mengklik kesalahan di konsol jika kesalahan terjadi dalam paket. Ini disebabkan oleh fakta bahwa Unity tidak melihat skrip sebagai file terpisah, karena ketika menggunakan Assembly Definition mereka dikumpulkan di perpustakaan dan terhubung ke proyek. Saat bekerja dengan kode sumber dari suatu proyek, beralih ke IDE dengan klik tersedia.
Skrip dalam proyek dengan paket yang terhubung:
Script dari paket dengan breakpoint yang berfungsi:
Perbaikan patch yang mendesak
Paket-paket kesatuan yang ditambahkan ke proyek hanya-baca, tetapi mereka dapat diedit dalam cache paket. Untuk melakukan ini, Anda harus:
- Pergi ke paket di cache paket.
- Buat perubahan yang diperlukan.
- Perbarui versi dalam file
package.json
. - Kirim paket
npm publish --registry * *
. - Perbarui versi paket ke yang diperbaiki melalui antarmuka UPM.
Konflik Impor Paket
Saat mengimpor paket, konflik GUID berikut dapat terjadi:
- Paket - paket. Jika, ketika mengimpor paket, ditemukan bahwa paket yang sudah ditambahkan memiliki aset dengan GUID yang sama, aset dengan GUID yang cocok dari paket impor tidak akan ditambahkan ke proyek.
- Paket adalah proyek. Jika, ketika mengimpor paket, tampaknya proyek memiliki 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.
Mentransfer aset dari proyek ke paket
Jika Anda mentransfer aset dari proyek ke paket dengan Unity terbuka, fungsinya akan dipertahankan, dan tautan dalam aset dependen akan mulai menggunakan aset dari paket.
Penting : ketika Anda menyalin aset dari suatu proyek ke sebuah paket, konflik "Paket - Proyek" akan terjadi, seperti yang dijelaskan dalam bagian di atas.
Kemungkinan solusi konflik
- Penugasan kembali GUID sesuai dengan algoritme mereka sendiri saat mengimpor semua aset untuk menghindari tabrakan.
- Menambahkan semua aset ke satu proyek dengan pembagian selanjutnya ke dalam paket.
- Pembuatan database yang berisi GUID dari semua aset, dan validasi saat mengirim paket.
Kesimpulan
UPM adalah solusi baru untuk mendistribusikan sumber daya bersama ke Unity, yang dapat menjadi alternatif yang layak untuk metode yang ada. Rekomendasi yang dijelaskan dalam artikel muncul berdasarkan kasus nyata. Kami harap Anda menemukan mereka berguna.