Vienotības pakotņu pārvaldnieks

VienotÄ«ba ir platforma, kas pastāv jau labu laiku un nepārtraukti attÄ«stās. Tomēr, strādājot tajā ar vairākiem projektiem vienlaikus, joprojām var rasties grÅ«tÄ«bas, izmantojot parastos avotus (.cs), bibliotēkas (.dll) un citus lÄ«dzekļus (attēlus, skaņas, modeļus, sagataves). Å ajā rakstā mēs runāsim par savu pieredzi ar VienotÄ«bas nopietno risinājumu Ŕādai problēmai.

Vienotības pakotņu pārvaldnieks

Kopīgo resursu sadales metodes

Ir vairāk nekā viens veids, kā izmantot kopīgus resursus dažādiem projektiem, taču katrai pieejai ir savi plusi un mīnusi.

1. Dublikācija ā€” mēs dublējam resursus starp projektiem ā€œar rokuā€.

Plusi:

  • Piemērots visu veidu resursiem.
  • Nav atkarÄ«bas problēmu.
  • Nav problēmu ar lÄ«dzekļu GUID.

MÄ«nusi:

  • Milzu krātuves.
  • Nav iespēju izveidot versiju.
  • GrÅ«tÄ«bas izsekot koplietoto resursu izmaiņām.
  • GrÅ«tÄ«bas atjaunināt koplietotos resursus.

2. Git apakÅ”moduļi ā€” kopÄ«go resursu sadale, izmantojot ārējos apakÅ”moduļus.

Plusi:

  • JÅ«s varat strādāt ar avotiem.
  • JÅ«s varat izplatÄ«t lÄ«dzekļus.
  • Nav atkarÄ«bas problēmu.

MÄ«nusi:

  • NepiecieÅ”ama Git pieredze.
  • Git nav Ä«paÅ”i draudzÄ«gs ar binārajiem failiem - jums bÅ«s jāpievieno LFS.
  • Piekļuves kontrole krātuvēm.
  • GrÅ«tÄ«bas ar versiju jaunināŔanu un pazemināŔanu.
  • Ir iespējamas GUID sadursmes, un no Unity puses nav skaidras rÄ«cÄ«bas, lai tās atrisinātu.

3. NuGet - koplietojamo bibliotēku izplatÄ«Å”ana, izmantojot NuGet pakotnes.

Plusi:

  • Ērts darbs ar projektiem, kas nav atkarÄ«gi no VienotÄ«bas.
  • Ērta versiju veidoÅ”ana un atkarÄ«bas izŔķirtspēja.

MÄ«nusi:

  • Unity nevar strādāt ar NuGet pakotnēm, kas ir izņemtas no komplektācijas (GitHub varat atrast NuGet Package Manager for Unity, kas to novērÅ”, taču ir dažas nianses).
  • GrÅ«tÄ«bas izplatÄ«t cita veida aktÄ«vus.

4. Unity Package Manager - koplietojamo resursu izplatÄ«Å”ana, izmantojot vietējo Unity risinājumu.

Plusi:

  • Vietējā saskarne darbam ar pakotnēm.
  • AizsardzÄ«ba pret .meta failu pārrakstÄ«Å”anu pakotnēs GUID konfliktu dēļ.
  • Versiju veidoÅ”anas iespēja.
  • Spēja izplatÄ«t visa veida resursus VienotÄ«bai.

MÄ«nusi:

  • Joprojām var rasties GUID konflikti.
  • IevieÅ”anai nav dokumentācijas.

Pēdējai metodei ir vairāk priekÅ”rocÄ«bu nekā trÅ«kumu. Tomēr Å”obrÄ«d tas nav Ä«paÅ”i populārs dokumentācijas trÅ«kuma dēļ, un tāpēc mēs pie tā pakavēsimies sÄ«kāk.

Vienotības pakotņu pārvaldnieks

Unity Package Manager (UPM) ir pakotņu pārvaldības rīks. Tas tika pievienots Unity 2018.1 un tika izmantots tikai pakotnēm, kuras izstrādāja Unity Technologies. Tomēr, sākot ar versiju 2018.3, kļuva iespējams pievienot pielāgotas pakotnes.

Vienotības pakotņu pārvaldnieks
Unity pakotņu pārvaldnieka saskarne

Paketes nenonāk projekta avotos (Assets directory). Tie atrodas atseviŔķā direktorijā %projectFolder%/Library/PackageCache un nekādā veidā neietekmē projektu, to vienÄ«gais pieminējums avota kodā ir failā packages/manifest.json.

Vienotības pakotņu pārvaldnieks
Paketes projekta failu sistēmā

PakeŔu avoti

UPM var izmantot vairākus pakotņu avotus:

1. Failu sistēma.

Plusi:

  • ÄŖstenoÅ”anas ātrums.
  • Nav nepiecieÅ”ami treÅ”o puÅ”u rÄ«ki.

MÄ«nusi:

  • GrÅ«tÄ«bas ar versiju veidoÅ”anu.
  • KopÄ«ga piekļuve failu sistēmai ir nepiecieÅ”ama ikvienam, kas strādā ar projektu.

2. Git repozitorijs.

Plusi:

  • Viss, kas jums nepiecieÅ”ams, ir Git repozitorijs.

MÄ«nusi:

  • JÅ«s nevarat pārslēgties starp versijām, izmantojot UPM logu.
  • Nedarbojas ar visām Git krātuvēm.

3. npm repozitorijs.

Plusi:

  • PilnÄ«bā atbalsta UPM funkcionalitāti un tiek izmantots oficiālo Unity pakotņu izplatÄ«Å”anai.

MÄ«nusi:

  • PaÅ”laik tiek ignorētas visas pakotņu virkņu versijas, izņemot "-preview".

Tālāk mēs apskatÄ«sim UPM + npm ievieÅ”anu. Å is komplekts ir ērts, jo ļauj strādāt ar jebkura veida resursiem un pārvaldÄ«t pakotņu versijas, kā arÄ« pilnÄ«bā atbalsta vietējo UPM saskarni.

Varat to izmantot kā npm repozitoriju Verdačo. Ir detalizēts dokumentāciju, un, lai to palaistu, ir nepiecieÅ”amas tikai dažas komandas.

Vides iekārtoŔana

Vispirms jums ir jāinstalē node.js.

Pakas izveide

Lai izveidotu paketi, jums ir jāievieto fails package.json, kurā tas tiks aprakstīts, uz direktoriju ar Ŕīs pakotnes saturu. Jums ir jāveic Ŕādas darbības:

Dodieties uz projekta direktoriju, kurā mēs vēlamies izveidot paketi.

Palaidiet komandu npm init un dialoglodziņā ievadiet vajadzīgās vērtības. Nosaukumam norādiet nosaukumu apgrieztā domēna formātā, piemēram, com.plarium.somepackage.
Lai ērti parādītu pakotnes nosaukumu, failam package.json pievienojiet rekvizītu displayName un aizpildiet to.

Tā kā npm ir orientēts uz js, failā ir mums nevajadzÄ«gie galvenie un skriptu rekvizÄ«ti, kurus Unity neizmanto. Labāk tos noņemt, lai nepārblÄ«vētu iepakojuma aprakstu. Failam vajadzētu izskatÄ«ties apmēram Ŕādi:

  1. Dodieties uz projekta direktoriju, kurā mēs vēlamies izveidot paketi.
  2. Palaidiet komandu npm init un dialoglodziņā ievadiet vajadzīgās vērtības. Nosaukumam norādiet nosaukumu apgrieztā domēna formātā, piemēram, com.plarium.somepackage.
  3. Lai ērti parādītu pakotnes nosaukumu, failam package.json pievienojiet rekvizītu displayName un aizpildiet to.
  4. Tā kā npm ir orientēts uz js, failā ir mums nevajadzÄ«gie galvenie un skriptu rekvizÄ«ti, kurus Unity neizmanto. Labāk tos noņemt, lai nepārblÄ«vētu iepakojuma aprakstu. Failam vajadzētu izskatÄ«ties apmēram Ŕādi:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Atveriet Unity un ģenerējiet .meta failu pakotnei package.json (Unity neredz līdzekļus bez .meta failiem, Unity pakotnes tiek atvērtas tikai lasāmā veidā).

Pakas nosūtīŔana

Lai nosÅ«tÄ«tu paketi, jums jāizpilda komanda: npm publish --registry *Š°Š“рŠµŃ Š“Š¾ хрŠ°Š½ŠøŠ»ŠøщŠ° ŠæŠ°ŠŗŠµŃ‚Š¾Š²*.

PakeÅ”u instalÄ“Å”ana un atjaunināŔana, izmantojot Unity Package Manager

Lai pievienotu paketi Unity projektam, jums ir nepiecieŔams:

  1. Pievienot failam manifest.json informācija par paku avotu. Lai to izdarÄ«tu, jums jāpievieno Ä«paÅ”ums scopedRegistries un norādiet tvērumus un avota adresi, kur tiks meklēti konkrēti tvērumi.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "Š°Š“рŠµŃ Š“Š¾ хрŠ°Š½ŠøŠ»ŠøщŠ° ŠæŠ°ŠŗŠµŃ‚Š¾Š²",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Dodieties uz Unity un atveriet pakotņu pārvaldnieka logu (darbs ar pielāgotajām pakotnēm neatŔķiras no darba ar iebÅ«vētajām).
  3. Atlasiet Visas paketes.
  4. Atrodiet vajadzīgo paketi un pievienojiet to.

Vienotības pakotņu pārvaldnieks

Darbs ar avotiem un atkļūdoŔana

Lai avoti būtu saistīti ar projektu, jums ir jāizveido Montāžas definīcija par iepakojumu.

PakeÅ”u izmantoÅ”ana neierobežo jÅ«su atkļūdoÅ”anas iespējas. Tomēr, strādājot ar pakotnēm pakalpojumā Unity, jÅ«s nevarat pāriet uz IDE, noklikŔķinot uz kļūdas konsolē, ja kļūda radās pakotnē. Tas ir saistÄ«ts ar faktu, ka Unity neuzskata skriptus kā atseviŔķus failus, jo, izmantojot Assembly Definition, tie tiek apkopoti bibliotēkā un iekļauti projektā. Strādājot ar avotiem no projekta, ir pieejama noklikŔķināŔana uz IDE.

Skripts projektā ar pievienotu pakotni:

Vienotības pakotņu pārvaldnieks
Skripts no pakotnes ar darba pārtraukuma punktu:

Vienotības pakotņu pārvaldnieks

Steidzami labojumi pakotnēs

Projektam pievienotās Unity pakotnes ir tikai lasāmas, taču tās var rediģēt pakotnes keÅ”atmiņā. Lai to izdarÄ«tu, jums ir nepiecieÅ”ams:

  1. Dodieties uz pakotni pakotnes keÅ”atmiņā.

    Vienotības pakotņu pārvaldnieks

  2. Veiciet nepiecieÅ”amās izmaiņas.
  3. Atjauniniet versiju failā package.json.
  4. NosÅ«tÄ«t paku npm publish --registry *Š°Š“рŠµŃ Š“Š¾ хрŠ°Š½ŠøŠ»ŠøщŠ° ŠæŠ°ŠŗŠµŃ‚Š¾Š²*.
  5. Atjauniniet pakotnes versiju uz laboto, izmantojot UPM saskarni.

Pakotņu importÄ“Å”anas konflikti

Importējot pakotnes, var rasties Ŕādi GUID konflikti:

  1. Iepakojums - iepakojums. Ja, importējot pakotni, tiek atklāts, ka jau pievienotajās pakotnēs ir lÄ«dzekļi ar tādu paÅ”u GUID, lÄ«dzekļi ar atbilstoÅ”iem GUID no importētās pakotnes projektam netiks pievienoti.
  2. Pakete ir projekts. Ja, importējot pakotni, tiek atklāts, ka projektā ir lÄ«dzekļi ar atbilstoÅ”iem GUID, lÄ«dzekļi no pakotnes projektam netiks pievienoti. Tomēr aktÄ«vi, kas ir atkarÄ«gi no tiem, sāks izmantot lÄ«dzekļus no projekta.

Aktīvu pārvietoŔana no projekta uz paketi

Ja pārsÅ«tāt lÄ«dzekli no projekta uz pakotni, kamēr Unity ir atvērts, tā funkcionalitāte tiks saglabāta un saites uz atkarÄ«giem lÄ«dzekļiem sāks izmantot Ä«paÅ”umu no pakotnes.

Tas ir svarÄ«gi: Kopējot lÄ«dzekli no projekta uz pakotni, radÄ«sies iepriekÅ” sadaļā aprakstÄ«tais konflikts ā€œPakotne ā€” projektsā€.

Iespējamie konfliktu risinājumi

  1. GUID atkārtota pieŔķirÅ”ana, izmantojot mÅ«su paÅ”u algoritmus, importējot visus lÄ«dzekļus, lai novērstu sadursmes.
  2. Visu lÄ«dzekļu pievienoÅ”ana vienam projektam un pēc tam to sadalÄ«Å”ana paketēs.
  3. Izveidojiet datubāzi, kurā ir visu līdzekļu GUID, un veiciet validāciju, nosūtot pakotnes.

Secinājums

UPM ir jauns risinājums kopÄ«gu resursu izplatÄ«Å”anai Unity, kas var bÅ«t cienÄ«ga alternatÄ«va esoÅ”ajām metodēm. Rakstā aprakstÄ«tie ieteikumi bija balstÄ«ti uz reāliem gadÄ«jumiem. Mēs ceram, ka tie jums noderēs.

Avots: www.habr.com

Pievieno komentāru