Menaxher i paketës së Unitetit

Unity është një platformë që ekziston për një kohë të gjatë dhe është vazhdimisht në zhvillim. Megjithatë, kur punoni me disa projekte në të njëjtën kohë, mund të hasni ende vështirësi në përdorimin e burimeve të zakonshme (.cs), bibliotekave (.dll) dhe aseteve të tjera (imazhe, tinguj, modele, parafabrika). Në këtë artikull, ne do të flasim për përvojën tonë me një zgjidhje vendase për një problem të tillë për Unity.

Menaxher i paketës së Unitetit

Metodat e shpërndarjes së burimeve të përbashkëta

Ka më shumë se një mënyrë për të përdorur burime të përbashkëta për projekte të ndryshme, por secila qasje ka të mirat dhe të këqijat e saj.

1. Dyfishim - “me dorë” ne dublikojmë burimet ndërmjet projekteve.

Pro:

  • I përshtatshëm për të gjitha llojet e burimeve.
  • Nuk ka çështje varësie.
  • Nuk ka problem me GUID-të e aseteve.

Cons:

  • Depo gjigante.
  • Nuk ka asnjë mundësi për versionim.
  • Vështirësi në gjurmimin e ndryshimeve në burimet e përbashkëta.
  • Vështirësi në përditësimin e burimeve të përbashkëta.

2. Nënmodulet Git - shpërndarja e burimeve të përbashkëta përmes nënmoduleve të jashtme.

Pro:

  • Mund të punoni me burime.
  • Ju mund të shpërndani pasuri.
  • Nuk ka çështje varësie.

Cons:

  • Kërkohen aftësi të gjirit.
  • Git nuk është shumë miqësor me skedarët binare - duhet të përfshini LFS.
  • Kontrolli i aksesit për depot.
  • Vështirësi në përmirësimin dhe uljen.
  • Përplasjet GUID janë të mundshme dhe nuk ka asnjë 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 paketave NuGet.

Pro:

  • Punë e përshtatshme me projekte që nuk varen nga Unity.
  • Versioni i përshtatshëm dhe zgjidhja e varësisë.

Cons:

  • Unity nuk di të punojë me paketat NuGet jashtë kutisë (mund të gjeni NuGet Package Manager për Unity në GitHub, i cili e rregullon këtë, por ka nuanca).
  • Vështirësi në shpërndarjen e llojeve të tjera të aseteve.

4. Unity Package Manager - shpërndarja e burimeve të përbashkëta përmes një zgjidhjeje vendase për Unity.

Pro:

  • Ndërfaqe amtare për të punuar me paketa.
  • Mbrojtje kundër mbishkrimit të skedarëve .meta në paketa në rast të konflikteve të GUID.
  • Aftësia e versionimit.
  • Aftësia për të shpërndarë të gjitha llojet e burimeve për Unity.

Cons:

  • Konfliktet GUID mund të ndodhin ende.
  • Nuk ka asnjë dokumentacion për zbatimin.

Metoda e fundit ka më shumë avantazhe sesa disavantazhe. Sidoqoftë, nuk është shumë popullor tani për shkak të mungesës së dokumentacionit, dhe për këtë arsye ne do të ndalemi në të në detaje.

Menaxher i paketës së Unitetit

Unity Package Manager (më tutje referuar si UPM) është një mjet i menaxhimit të paketave. Ai u shtua në Unity 2018.1 dhe u përdor vetëm për paketat e zhvilluara nga Unity Technologies. Sidoqoftë, duke filluar me versionin 2018.3, u bë e mundur shtimi i paketave me porosi.

Menaxher i paketës së Unitetit
Ndërfaqja e Unity Package Manager

Paketat nuk përfundojnë në burimet e projektit (Direktoria e Assets). Ato janë në një drejtori të veçantë. %projectFolder%/Library/PackageCache dhe nuk ndikojnë në projekt në asnjë mënyrë, përmendja e tyre e vetme në kodin burimor është në skedar packages/manifest.json.

Menaxher i paketës së Unitetit
Paketat në sistemin e skedarëve të projektit

Burimet e paketës

UPM mund të përdorë disa burime paketash:

1. Sistemi i skedarëve.

Pro:

  • Shpejtësia e zbatimit.
  • Nuk kërkon mjete të palëve të treta.

Cons:

  • kompleksiteti i versionimit.
  • Qasja e përbashkët në sistemin e skedarëve kërkohet për të gjithë ata që punojnë me projektin.

2. Depoja e Git.

Pro:

  • Gjithçka që ju nevojitet është një depo Git.

Cons:

  • Ju nuk mund të kaloni midis versioneve përmes dritares së UPM.
  • Nuk funksionon me të gjitha depot e Git.

3. npm depo.

Pro:

  • Mbështet plotësisht funksionalitetin UPM dhe përdoret për të shpërndarë paketat zyrtare të Unity.

Cons:

  • Aktualisht injoron të gjitha versionet e vargjeve të paketave përveç "-preview".

Ne do të shikojmë zbatimin e UPM + npm më poshtë. Kjo paketë është e përshtatshme sepse ju lejon të punoni me çdo lloj burimi dhe të menaxhoni versionet e paketave, dhe gjithashtu mbështet plotësisht ndërfaqen vendase UPM.

Si një depo npm, mund të përdorni Verdaccio. Ka një të detajuar dokumentacionin, dhe duhen fjalë për fjalë disa komanda për ta ekzekutuar atë.

Konfigurimi i mjedisit

Së pari ju duhet të instaloni node.js.

Krijo një paketë

Për të krijuar një paketë, duhet të vendosni skedarin package.json, i cili do ta përshkruajë atë, në drejtorinë me përmbajtjen e kësaj pakete. Ju duhet të bëni sa më poshtë:

Shkoni te drejtoria e projektit që duam të krijojmë një paketë.

Ekzekutoni komandën npm init dhe futni vlerat e kërkuara gjatë dialogut. Për emrin, specifikoni emrin në formatin e kundërt të domenit, për shembull, com.plarium.somepackage.
Për shfaqje të përshtatshme të emrit të paketës, shtoni veçorinë displayName në package.json dhe plotësoni atë.

Meqenëse npm është i orientuar nga js, skedari përmban vetitë kryesore dhe skriptet që nuk na duhen, të cilat Unity nuk i përdor. Është më mirë t'i hiqni ato në mënyrë që të mos bllokoni përshkrimin e paketës. Skedari duhet të duket diçka si kjo:

  1. Shkoni te drejtoria e projektit që duam të krijojmë një paketë.
  2. Ekzekutoni komandën npm init dhe futni vlerat e kërkuara gjatë dialogut. Për emrin, specifikoni emrin në formatin e kundërt të domenit, për shembull, com.plarium.somepackage.
  3. Për shfaqje të përshtatshme të emrit të paketës, shtoni veçorinë displayName në package.json dhe plotësoni atë.
  4. Meqenëse npm është i orientuar nga js, skedari përmban vetitë kryesore dhe skriptet që nuk na duhen, të cilat Unity nuk i përdor. Është më mirë t'i hiqni ato në mënyrë që të mos bllokoni përshkrimin e paketës. Skedari duhet të duket diçka si kjo:
    {
     "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 gjeneroni një skedar .meta për package.json (Unity nuk i sheh asetet pa skedarë .meta, paketat Unity hapen vetëm për lexim).

Dërgimi i një pakete

Për të dërguar një paketë, duhet të ekzekutoni komandën: npm publish --registry *адрес до хранилища пакетов*.

Instalimi dhe përditësimi i paketave përmes Unity Package Manager

Për të shtuar një paketë në një projekt Unity, duhet të:

  1. Shkruani në dosje manifest.json informacion në lidhje me burimin e paketave. Për ta bërë këtë, duhet të shtoni një pronë scopedRegistries dhe tregoni qëllimet dhe adresën e burimit me të cilin do të kërkohen fusha specifike.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Shkoni te Unity dhe hapni dritaren e Menaxherit të Paketave (puna me paketa të personalizuara nuk ndryshon nga puna me ato të integruara).
  3. Zgjidhni të gjitha paketat.
  4. Gjeni paketën e kërkuar dhe shtoni atë.

Menaxher i paketës së Unitetit

Puna me burime dhe korrigjimi

Në mënyrë që burimet të lidhen me projektin, ju duhet të krijoni Përkufizimi i Kuvendit për paketën.

Përdorimi i paketave nuk kufizon hapësirën për korrigjimin e gabimeve. Sidoqoftë, kur punoni me paketa në Unity, nuk mund të shkoni në IDE duke klikuar në një gabim në tastierë nëse gabimi ka ndodhur në paketë. Kjo është për shkak se Unity nuk i sheh skriptet si skedarë të veçantë, sepse kur përdoret përkufizimi i Kuvendit, ato mblidhen në një bibliotekë dhe përfshihen në projekt. Kur punoni me burime nga një projekt, është i disponueshëm një kalim me klikime në IDE.

Skript në një projekt me një paketë të lidhur:

Menaxher i paketës së Unitetit
Skript nga paketa me një pikë ndërprerjeje pune:

Menaxher i paketës së Unitetit

Rregullime urgjente të paketave

Paketat Unity të shtuara në projekt janë vetëm për lexim, por mund të modifikohen në cache-in e paketave. Për këtë ju duhet:

  1. Shkoni te paketa në cache e paketës.

    Menaxher i paketës së Unitetit

  2. Bëni ndryshimet e nevojshme.
  3. Përditëso versionin në skedar package.json.
  4. dërgoni paketën npm publish --registry *адрес до хранилища пакетов*.
  5. Përditësoni versionin e paketës në versionin e korrigjuar përmes ndërfaqes UPM.

Konfliktet e importit të paketave

Kur importoni paketa, mund të ndodhin konfliktet e mëposhtme të GUID:

  1. Paketa është një paketë. Nëse, gjatë importimit të një pakete, konstatohet se paketat e shtuara tashmë kanë aktive me të njëjtin GUID, asetet me GUID që përputhen nga paketa e importuar nuk do të shtohen në projekt.
  2. Paketa është një projekt. Nëse, gjatë importimit të një pakete, konstatohet se projekti ka asete me GUID që përputhen, atëherë asetet nga paketa nuk do t'i shtohen projektit. Megjithatë, asetet që varen prej tyre do të fillojnë të përdorin asetet nga projekti.

Transferimi i aktiveve nga një projekt në një paketë

Nëse transferoni një aktiv nga një projekt në një paketë me Unity të hapur, atëherë funksionaliteti i tij do të ruhet dhe lidhjet në asetet e varura do të fillojnë të përdorin aktivin nga paketa.

Është e rëndësishme: Kur kopjoni një aktiv nga një projekt në një paketë, do të ndodhë konflikti paketë-projekt i përshkruar në seksionin e mësipërm.

Zgjidhjet e mundshme të konflikteve

  1. Ricaktimi i GUID-ve sipas algoritmeve të veta kur importoni të gjitha asetet për të shmangur përplasjet.
  2. Shtimi i të gjitha aseteve në një projekt me ndarjen e tyre të mëvonshme në paketa.
  3. Krijoni një bazë të dhënash që përmban GUID-të e të gjitha aseteve dhe verifikojeni kur dorëzoni paketa.

Përfundim

UPM është një zgjidhje e re për shpërndarjen e burimeve të përbashkëta në Unity që mund të jetë një alternativë e denjë për metodat ekzistuese. Rekomandimet e përshkruara në artikull u ngritën në bazë të rasteve reale. Shpresojmë që t'i gjeni të dobishme.

Burimi: www.habr.com

Shto një koment