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 hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster