Unity â njĂ« platformĂ« qĂ« ekziston prej njĂ« kohe tĂ« gjatĂ« dhe vazhdon tĂ« zhvillohet. MegjithatĂ«, duke punuar me disa projekte njĂ«kohĂ«sisht, ende mund tĂ« ndeshni vĂ«shtirĂ«si nĂ« pĂ«rdorimin e burimeve tĂ« pĂ«rbashkĂ«ta (.cs), bibliotekave (.dll) dhe aseteve tĂ« tjera (imazhe, tinguj, modele, prefabrikate). NĂ« kĂ«tĂ« artikull do tĂ« flasim pĂ«r pĂ«rvojĂ«n tonĂ« nĂ« zgjidhjen native tĂ« kĂ«tij problemi pĂ«r Unity.

Metodat e shpërndarjes së burimeve të përbashkëta
Ekzistojnë më shumë se një mënyrë për të përdorur burime të përbashkëta për projekte të ndryshme, por çdo qasje ka avantazhet dhe disavantazhet e saj.
1. Dublimi â "duke u bĂ«rĂ«" dublimin e burimeve mes projekteve.
Avantazhet:
- Përshtatet për të gjitha llojet e burimeve.
- Nuk ka probleme me varësitë.
- Nuk ka probleme me GUID-at e aseteve.
Disavantazhet:
- Repo të mëdha.
- Nuk ka mundësi për versionim.
- Vështirësi në ndjekjen e ndryshimeve në burimet e përbashkëta.
- Vështirësi në përditësimin e burimeve të përbashkëta.
2. â shpĂ«rndarja e burimeve tĂ« pĂ«rbashkĂ«ta pĂ«rmes nĂ«nmodulave tĂ« jashtĂ«m.
Avantazhet:
- Mund të punoni me burimet burimore.
- Mund të shpërndani asete.
- Nuk ka probleme me varësitë.
Disavantazhet:
- Kërkon aftësi në përdorimin e Git.
- Git nuk Ă«shtĂ« shumĂ« i pĂ«rputhshĂ«m me skedarĂ«t binar â do t'ju duhet tĂ« aktivizoni LFS.
- Shkëputja e aksesit për repot.
- Vështirësi me rritjen dhe uljen e versioneve.
- Mund tĂ« ndodhin kolizionet e GUID-eve dhe nuk ka njĂ« sjellje tĂ« qartĂ« nga ana e Unity pĂ«r tâi zgjidhur ato.
3. NuGet â shpĂ«rndarja e bibliotekave tĂ« pĂ«rbashkĂ«ta pĂ«rmes paketeve NuGet.
Avantazhet:
- Punë e leverdishme me projekte që nuk varen nga Unity.
- Versionim i lehtë dhe zgjidhje e varësive.
Disavantazhet:
- Unity nuk e menaxhon dot paketat NuGet "nga fabrika" (në GitHub mund të gjeni Menaxherin e Paketave NuGet për Unity, i cili e rregullon këtë, por ka nuanca).
- Vështirësi në shpërndarjen e llojeve të tjera të aseteve.
4. Menaxheri i Paketave tĂ« Unity â shpĂ«rndarja e burimeve tĂ« pĂ«rbashkĂ«ta pĂ«rmes njĂ« zgjidhjeje native pĂ«r Unity.
Avantazhet:
- Interfejsi native për punën me paketa.
- Mbrojtja nga ri-shkruajtja e skedarëve .meta në paketa në rast të kolizionit të GUID-eve.
- Mundësia e versionimit.
- Mundësia për shpërndarjen e të gjitha llojeve të burimeve për Unity.
Disavantazhet:
- Ende mund të ndodhin konflikte GUID-e.
- Nuk ka dokumentacion për implementimin.
Mënyra e fundit ka më shumë përfitime se disavantazhe. Megjithatë, momentalisht nuk është shumë i popullarizuar për shkak të mungesës së dokumentacionit, dhe për këtë arsye do të ndalemi në të në detaje.
Menaxheri i Paketave të Unity
Menaxheri i Paketave Unity (më pas UPM) është një mjet për menaxhimin e pakove. Ai u shtua në Unity 2018.1 dhe është përdorur vetëm për paketat që ishin zhvilluar nga Unity Technologies. Megjithatë, që nga versioni 2018.3, u krijua mundësia për të shtuar paketa të personalizuara.

Ndërfaqja e Menaxherit të Paketave Unity
Paketat nuk përfshihen në kodin burimor të projektit (direktoria Assets). Ato ndodhen në një direktori të veçantë %projectFolder%/Library/PackageCache dhe nuk kanë asnjë ndikim në projekt, përmendja e vetme e tyre në kodin burimor është në skedarin packages/manifest.json.

Paketat në sistemin e skedarëve të projektit
Burimet e pakove
UPM mund të përdorë disa burime pakosh:
1. Sistemi i skedarëve.
Avantazhet:
- Shpejtësia e zbatimit.
- Nuk kërkon mjete të jashtme.
Disavantazhet:
- Vështirësia në versionim.
- Kërkohet qasje e përbashkët në sistemin e skedarëve për të gjithë ata që punojnë me projektin.
2. Repozitori Git.
Avantazhet:
- Kërkohet vetëm një repo Git.
Disavantazhet:
- Nuk mund të kaloni midis versioneve përmes dritares UPM.
- Nuk funksionon me të gjithë repozitorët Git.
3. Repozitori npm.
Avantazhet:
- Plotësisht mbështet funksionalitetin e UPM dhe përdoret për shpërndarjen e paketave zyrtare të Unity.
Disavantazhet:
- Aktualisht injoron të gjitha versionet string të pakove, përveç «-preview».
Më poshtë do të shqyrtojmë zbatimin e UPM + npm. Kjo lidhje është e përshtatshme pasi lejon punën me çdo lloj burimi dhe menaxhimin e versioneve të pakove, si dhe plotësisht mbështet ndërfaqen nativ të UPM.
Si një repo npm mund të përdoret . Ka dokumentacion të detajuar , dhe për ta nisur do të nevojiten vetëm disa komanda.
Konfigurimi i mjedisit
Për të filluar duhet të instaloni .
Krijimi i paketës
Për të krijuar një paketë, është e nevojshme të vendosni skedarin package.json, i cili do ta përshkruajë atë, në direktorinë e përmbajtjes së kësaj pakete. Duhet të bëni si vijon:
Të kaloni në direktorinë e projektit, që dëshironi ta bëni paketë.
Të ekzekutoni komandën npm init dhe gjatë dialogut të vendosni vlerat e nevojshme. Për emrin, tregoni një emër në formatin e reversit të domainit, për shembull com.plarium.somepackage.
Për një shfaqje më të lehtë të emrit të paketës, shtoni pronën displayName në package.json dhe plotësoni atë.
Duke qenĂ« se npm Ă«shtĂ« i orientuar ndaj js, nĂ« skedar ka disa prona tĂ« panevojshme main dhe scripts, tĂ« cilat Unity nuk i pĂ«rdor. ĂshtĂ« mĂ« mirĂ« tâi hiqni ato, pĂ«r tĂ« mos e mbushur pĂ«rshkrimin e paketĂ«s. Skedari duhet tĂ« duket kĂ«shtu:
- Të kaloni në direktorinë e projektit, që dëshironi ta bëni paketë.
- Të ekzekutoni komandën npm init dhe gjatë dialogut të vendosni vlerat e nevojshme. Për emrin, tregoni një emër në formatin e reversit të domainit, për shembull com.plarium.somepackage.
- Për një shfaqje më të lehtë të emrit të paketës, shtoni pronën displayName në package.json dhe plotësoni atë.
- Duke qenĂ« se npm Ă«shtĂ« i orientuar ndaj js, nĂ« skedar ka disa prona tĂ« panevojshme main dhe scripts, tĂ« cilat Unity nuk i pĂ«rdor. ĂshtĂ« mĂ« mirĂ« tâi hiqni ato, pĂ«r tĂ« mos e mbushur pĂ«rshkrimin e paketĂ«s. Skedari duhet tĂ« duket kĂ«shtu:
{ "name": "com.plarium.somepackage", "displayName": "Some Package", "version": "1.0.0", "description": "Some Package Description", "keywords": [ "Unity", "UPM" ], "author": "AUTHOR", "license": "UNLICENSED" } - Hapni Unity dhe krijo një skedar .meta për package.json (Unity nuk i sheh asetet pa skedat .meta, paketat për Unity hapen vetëm për lexim).
Dërgimi i paketës
Për të dërguar paketën, duhet të ekzekutosh komandën: npm publish --registry *adresa e depozitës së pakove*.
Instalimi dhe azhurnimi i pakove përmes Menaxherit të Pakove të Unity
Për të shtuar një paketë në projektin Unity, duhet:
- Të bësh ndryshime në skedarin
manifest.jsoninformacionin mbi burimet e pakove. Për këtë, duhet të shtosh pronënscopedRegistriesdhe të specifikosh skopet dhe adresën e burimit, ku do të kërkohen skopet e caktuara."scopedRegistries": [ { "name": "Main", "url": "adresa e depozitës së pakove", "scopes": [ "com.plarium" ] } ] - Kaloni në Unity dhe hapni dritaren e Menaxherit të Pakove (puna me paketat personalizuar nuk ndryshon nga puna me ato të ndërtuara brenda).
- Zgjidhni TĂ« gjitha Paketat.
- Gjeni paketën e nevojshme dhe shtoni atë.

Puna me burime dhe debugimi
Për të lidhur burimet me projektin, duhet të krijosh për paketën.
Përdorimi i pakove nuk kufizon mundësitë për debugim. Sidoqoftë, kur punoni me pakot në Unity, nuk mund të kaloni në IDE duke klikuar mbi një gabim në konsolë, nëse gabimi ka ndodhur në paketë. Kjo vjen si rezultat i faktit se Unity nuk i sheh skritat si skedarë të veçantë, pasi që kur përdoren Definimet e Asamblesë, ato mblidhen në bibliotekë dhe lidhen me projektin. Kur punoni me burimet nga projekti, kalimi në IDE është i disponueshëm me një klik.
Skripti në projektin me paketën e lidhur:

Skripti nga paketa me një pikë ndalimi të funksionuar:

Një rregullim urgjent në paketa
Pakot e shtuar në projektin Unity janë të hapura vetëm për lexim, por ato mund të redaktohen në cache-in e pakove. Për këtë, duhet:
- Të kalosh në paketën në cache-in e pakove.

- Të bësh ndryshimet e nevojshme.
- Të azhurnosh versionin në skedarin
package.json. - Të dërgosh paketën
npm publish --registry *adresa e depozitës së pakove*. - Të azhurnosh versionin e paketës në versionin e rregulluar përmes ndërfaqes UPM.
Konkfliktet e importit të paketave
Gjatë importit të paketave, mund të ndodhin konfliktet e mëposhtme të GUID-eve:
- PaketĂ« â paketĂ«. NĂ«se gjatĂ« importit tĂ« paketit zbulon se nĂ« paketat e already are janĂ« aset me tĂ« njĂ«jtin GUID, asetet me GUID tĂ« pĂ«rputhshĂ«m nga paketa e importuar nuk do tĂ« shtohen nĂ« projekt.
- Paketa është një projekt. Nëse gjatë importit të paketës zbulohen asete me GUID të njëjtë në projekt, asetet nga paketa nuk do të përfshihen në projekt. Megjithatë, asetet që varen nga to do të fillojnë të përdorin asetet nga projekti.
Transferimi i aseteve nga projekti në paketë
Nëse transferoni një aset nga projekti në paketë kur Unity është e hapur, funksionaliteti i tij do të ruhet, dhe lidhjet në asetet që varen do të fillojnë të përdorin asetin nga paketa.
ĂhtĂ« e rĂ«ndĂ«sishme: gjatĂ« kopjimit tĂ« njĂ« aseti nga projekti nĂ« paketĂ« ndodhin konflikte "PaketĂ« - projekt", tĂ« pĂ«rshkruara nĂ« seksionin e mĂ«sipĂ«rm.
Zgjidhjet e mundshme të konflikteve
- Rinominimi i GUID-ve sipas algoritmeve të veta gjatë importit të të gjithë aseteve për të shmangur kolizionet.
- Shtimi i të gjithë aseteve në një projekt me ndarjen e mëvonshme në paketa.
- Krijimi i një baze të dhënash që përmban GUID-të e të gjithë aseteve dhe kryerja e validimit gjatë dërgimit të paketimeve.
Përfundim
UPM është një zgjidhje e re për shpërndarjen e burimeve të përbashkëta në Unity, e cila mund të jetë një alternativë e denjë për metodat ekzistuese. Rekomandimet e përshkruara në artikull kanë lindur nga raste reale. Shpresojmë që ato t'ju ndihmojnë.
Burimi: habr.com

