Unity mangrupikeun platform anu parantos lami lami sareng terus mekar. Nanging, nalika damel di dinya sareng sababaraha proyék dina waktos anu sami, anjeun masih tiasa ngalaman kasusah dina ngagunakeun sumber umum (.cs), perpustakaan (.dll) sareng aset sanésna (gambar, sora, modél, prefab). Dina tulisan ieu urang bakal ngobrol ngeunaan pangalaman urang sareng solusi asli pikeun masalah sapertos Unity.
Métode Distribusi Sumberdaya Dibagi
Aya leuwih ti hiji cara ngagunakeun sumberdaya dibagikeun keur proyék béda, tapi unggal pendekatan boga pro jeung kontra.
1. Duplikasi - urang duplikat sumberdaya antara proyék "ku leungeun".
pro:
- Cocog jeung sagala jinis sumberdaya.
- Taya masalah kagumantungan.
- Henteu aya masalah sareng GUID aset.
kontra:
- Repositories raksasa.
- Teu aya kamungkinan versi.
- Kasesahan nyukcruk parobahan sumberdaya dibagikeun.
- Kasesahan ngamutahirkeun sumberdaya dibagikeun.
2.
pro:
- Anjeun tiasa damel sareng sumberna.
- Anjeun tiasa ngadistribusikaeun aset.
- Taya masalah kagumantungan.
kontra:
- pangalaman Git diperlukeun.
- Git henteu ramah pisan sareng file binér - anjeun kedah nyambungkeun LFS.
- Kontrol aksés pikeun repositories.
- Kasesahan sareng ningkatkeun sareng nurunkeun versi.
- Tabrakan GUID mungkin sareng teu aya paripolah anu jelas dina Unity pikeun ngabéréskeunana.
3. NuGet - distribusi perpustakaan dibagikeun ngaliwatan pakét NuGet.
pro:
- Karya anu gampang sareng proyék anu henteu gumantung kana Unity.
- Vérsi merenah tur resolusi kagumantungan.
kontra:
- Unity teu tiasa dianggo sareng bungkusan NuGet out of the box (dina GitHub anjeun tiasa mendakan Manajer Paket NuGet pikeun Unity, anu ngalereskeun ieu, tapi aya sababaraha nuansa).
- Kasesahan dina ngadistribusikaeun tipe séjén aset.
4. Unity Package Manager - distribusi sumberdaya anu dibagikeun ngaliwatan solusi asli pikeun Unity.
pro:
- Antarbeungeut asli pikeun damel sareng bungkusan.
- Perlindungan ngalawan overwriting file .meta dina bungkusan alatan konflik GUID.
- Kamungkinan versioning.
- Kamampuhan pikeun ngadistribusikaeun sagala jinis sumberdaya pikeun Unity.
kontra:
- Konflik GUID masih bisa lumangsung.
- Henteu aya dokuméntasi pikeun palaksanaan.
Metodeu anu terakhir ngagaduhan langkung kaunggulan tibatan kalemahan. Nanging, éta henteu populer pisan ayeuna kusabab kurangna dokuméntasi, sareng ku kituna urang bakal ngabahas sacara rinci.
Manajer Paket Unity
Unity Package Manager (UPM) mangrupikeun alat manajemén pakét. Tambihkeun dina Unity 2018.1 sareng ngan ukur dianggo pikeun bungkusan anu dikembangkeun ku Unity Technologies. Nanging, dimimitian ku vérsi 2018.3, janten kamungkinan pikeun nambihan bungkusan khusus.
Unity Paket Manajer Interface
Bungkusan henteu mungkas dina sumber proyék (Diréktori Aset). Aranjeunna dina diréktori misah %projectFolder%/Library/PackageCache
sarta teu mangaruhan proyék sagala cara, ngan nyebut maranéhanana dina kode sumber aya dina file packages/manifest.json
.
Paket dina sistem file proyék
Sumber pakét
UPM tiasa nganggo sababaraha sumber pakét:
1. Sistem file.
pro:
- Laju palaksanaan.
- Teu merlukeun parabot pihak katilu.
kontra:
- Kasesahan dina versioning.
- Aksés anu dibagi kana sistem file diperyogikeun pikeun sadayana anu damel sareng proyék éta.
2. Repository Git.
pro:
- Sadaya anu anjeun peryogikeun nyaéta gudang Git.
kontra:
- Anjeun teu bisa pindah antara versi ngaliwatan jandela UPM.
- Henteu dianggo sareng sadaya repositori Git.
3. gudang npm.
pro:
- Sapinuhna ngadukung fungsionalitas UPM sareng dianggo pikeun nyebarkeun bungkusan Unity resmi.
kontra:
- Ayeuna teu malire sadaya versi string bungkusan iwal "-preview".
Di handap ieu urang bakal ningali palaksanaan UPM + npm. Bungkusan ieu cocog sabab ngamungkinkeun anjeun damel sareng jinis sumber daya sareng ngatur versi pakét, sareng ogé ngadukung antarmuka UPM asli.
Anjeun tiasa nganggo éta salaku gudang npm
Nyetél lingkungan
Mimiti anjeun kedah masang
Nyiptakeun pakét
Pikeun nyieun pakét, anjeun kedah nempatkeun file package.json
, anu bakal ngajelaskeun éta, kana diréktori sareng eusi pakét ieu. Anjeun kedah ngalakukeun ieu:
Pindah ka diréktori proyék anu urang badé ngadamel pakét.
Jalankeun paréntah npm init sareng lebetkeun nilai anu diperyogikeun salami dialog. Pikeun ngaran, tangtukeun ngaran dina format domain sabalikna, contona com.plarium.somepackage.
Pikeun merenah mintonkeun ngaran pakét, tambahkeun sipat displayName pikeun package.json sarta eusian eta.
Kusabab npm berorientasi js, file ngandung sipat utama sareng skrip anu urang henteu peryogikeun, anu henteu dianggo ku Unity. Hadé pisan mun éta nyabut aranjeunna ku kituna teu clutter pedaran pakét. Berkasna kedah siga kieu:
- Pindah ka diréktori proyék anu urang badé ngadamel pakét.
- Jalankeun paréntah npm init sareng lebetkeun nilai anu diperyogikeun salami dialog. Pikeun ngaran, tangtukeun ngaran dina format domain sabalikna, contona com.plarium.somepackage.
- Pikeun merenah mintonkeun ngaran pakét, tambahkeun sipat displayName pikeun package.json sarta eusian eta.
- Kusabab npm berorientasi js, file ngandung sipat utama sareng skrip anu urang henteu peryogikeun, anu henteu dianggo ku Unity. Hadé pisan mun éta nyabut aranjeunna ku kituna teu clutter pedaran pakét. Berkasna kedah siga kieu:
{ "name": "com.plarium.somepackage", "displayName": "Some Package", "version": "1.0.0", "description": "Some Package Description", "keywords": [ "Unity", "UPM" ], "author": "AUTHOR", "license": "UNLICENSED" }
- Buka Unity sarta ngahasilkeun file .meta pikeun package.json (Unity henteu ningali aset tanpa file .meta, bungkusan pikeun Unity dibuka baca-hijina).
Ngirim pakét
Pikeun ngirim pakét anjeun kedah ngajalankeun paréntah: npm publish --registry *адрес до хранилища пакетов*
.
Masang sareng ngapdet bungkusan via Unity Package Manager
Pikeun nambihan pakét kana proyék Unity, anjeun peryogi:
- Tambahkeun ka file
manifest.json
inpormasi ngeunaan sumber bungkusan. Jang ngalampahkeun ieu anjeun kudu nambahkeun hartascopedRegistries
sareng nunjukkeun ruang lingkup sareng alamat sumber dimana lingkup khusus bakal dipilarian."scopedRegistries": [ { "name": "Main", "url": "адрес до хранилища пакетов", "scopes": [ "com.plarium" ] } ]
- Pindah ka Unity sareng buka jandela Manajer Paket (ngagawekeun bungkusan khusus henteu béda sareng damel sareng anu diwangun).
- Pilih Sadaya Paket.
- Manggihan pakét nu peryogi tur nambahkeun eta.
Gawe sareng sumber sareng debugging
Supados sumber disambungkeun kana proyék, Anjeun kudu nyieun
Ngagunakeun bungkusan teu ngawatesan pilihan debugging Anjeun. Nanging, nalika damel sareng bungkusan di Unity, anjeun moal tiasa angkat ka IDE ku ngaklik kasalahan dina konsol upami aya kasalahan dina bungkusan. Ieu disababkeun ku kanyataan yén Unity henteu ningali naskah salaku file anu misah, sabab nalika ngagunakeun Définisi Majelis aranjeunna dikumpulkeun kana perpustakaan sareng kalebet dina proyék. Nalika damel sareng sumber tina proyék, ngaklik kana IDE sayogi.
Skrip dina proyék sareng pakét disambungkeun:
Skrip tina pakét kalayan titik putus kerja:
Perbaikan urgent kana bungkusan
Bungkusan Unity anu ditambahkeun kana proyék ngan ukur dibaca, tapi tiasa diédit dina cache pakét. Jang ngalampahkeun ieu anjeun peryogi:
- Pindah ka pakét dina cache pakét.
- Jieun perobahan nu diperlukeun.
- Apdet versi dina file
package.json
. - Kirim pakét
npm publish --registry *адрес до хранилища пакетов*
. - Apdet versi pakét ka anu dilereskeun liwat antarmuka UPM.
pakét impor bentrok
Konflik GUID di handap ieu tiasa lumangsung nalika ngimpor bungkusan:
- Bungkusan - pakét. Upami, nalika ngimpor pakét, mendakan yén pakét anu parantos ditambah ngandung aset sareng GUID anu sami, aset sareng GUID anu cocog tina pakét anu diimpor moal ditambah kana proyék.
- Paket mangrupikeun proyek. Upami, nalika ngimpor pakét, mendakan yén proyék éta ngandung aset sareng GUID anu cocog, maka aset tina pakét éta moal ditambah kana proyék éta. Nanging, aset anu gumantung kana aranjeunna bakal ngamimitian nganggo aset tina proyék éta.
Mindahkeun aset tina proyék ka pakét
Upami anjeun nransferkeun aset tina proyék ka pakét nalika Unity dibuka, fungsionalitasna bakal dilestarikan, sareng tautan dina aset anu gumantung bakal mimiti nganggo aset tina bungkusan.
penting: Nalika nyalin aset tina proyék kana pakét, konflik "Pakét - Proyék" anu dijelaskeun dina bagian di luhur bakal lumangsung.
Solusi anu mungkin pikeun konflik
- Reassigning GUIDs ngagunakeun algoritma urang sorangan nalika ngimpor sakabéh aset pikeun ngaleungitkeun tabrakan.
- Nambahkeun sadaya aset kana hiji proyék teras ngabagi kana bungkusan.
- Nyiptakeun pangkalan data anu ngandung GUID sadaya aset sareng ngalaksanakeun validasi nalika ngirim bungkusan.
kacindekan
UPM mangrupikeun solusi énggal pikeun nyebarkeun sumber daya anu dibagikeun dina Unity, anu tiasa janten alternatif anu pantes pikeun metode anu aya. Rekomendasi anu dijelaskeun dina tulisan dumasar kana kasus nyata. Simkuring miharep anjeun manggihan aranjeunna mangpaat.
sumber: www.habr.com