Menaxheri i Paketave të Unity

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.

Menaxheri i Paketave të 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. Git submodules — 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.

Menaxheri i Paketave të Unity
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.

Menaxheri i Paketave të Unity
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 Verdaccio. Ka dokumentacion të detajuar dokumentacioni, dhe për ta nisur do të nevojiten vetëm disa komanda.

Konfigurimi i mjedisit

Për të filluar duhet të instaloni node.js.

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:

  1. Të kaloni në direktorinë e projektit, që dëshironi ta bëni paketë.
  2. 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.
  3. Për një shfaqje më të lehtë të emrit të paketës, shtoni pronën displayName në package.json dhe plotësoni atë.
  4. 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"
    }

  5. 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:

  1. Të bësh ndryshime në skedarin manifest.json informacionin mbi burimet e pakove. Për këtë, duhet të shtosh pronën scopedRegistries dhe 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"
         ]
       }
     ]
    
  2. Kaloni në Unity dhe hapni dritaren e Menaxherit të Pakove (puna me paketat personalizuar nuk ndryshon nga puna me ato të ndërtuara brenda).
  3. Zgjidhni TĂ« gjitha Paketat.
  4. Gjeni paketën e nevojshme dhe shtoni atë.

Menaxheri i Paketave të Unity

Puna me burime dhe debugimi

Për të lidhur burimet me projektin, duhet të krijosh Definimin e Asamblesë 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:

Menaxheri i Paketave të Unity
Skripti nga paketa me një pikë ndalimi të funksionuar:

Menaxheri i Paketave të Unity

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:

  1. Të kalosh në paketën në cache-in e pakove.

    Menaxheri i Paketave të Unity

  2. Të bësh ndryshimet e nevojshme.
  3. Të azhurnosh versionin në skedarin package.json.
  4. Të dërgosh paketën npm publish --registry *adresa e depozitës së pakove*.
  5. 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:

  1. 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.
  2. 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

  1. Rinominimi i GUID-ve sipas algoritmeve të veta gjatë importit të të gjithë aseteve për të shmangur kolizionet.
  2. Shtimi i të gjithë aseteve në një projekt me ndarjen e mëvonshme në paketa.
  3. 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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster