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.
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.
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.
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
.
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
Vides iekÄrtoÅ”ana
Vispirms jums ir jÄinstalÄ
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:
- 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:
{ "name": "com.plarium.somepackage", "displayName": "Some Package", "version": "1.0.0", "description": "Some Package Description", "keywords": [ "Unity", "UPM" ], "author": "AUTHOR", "license": "UNLICENSED" }
- 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:
- Pievienot failam
manifest.json
informÄcija par paku avotu. Lai to izdarÄ«tu, jums jÄpievieno Ä«paÅ”umsscopedRegistries
un norÄdiet tvÄrumus un avota adresi, kur tiks meklÄti konkrÄti tvÄrumi."scopedRegistries": [ { "name": "Main", "url": "Š°Š“ŃŠµŃ Š“Š¾ Ń ŃŠ°Š½ŠøŠ»ŠøŃŠ° ŠæŠ°ŠŗŠµŃŠ¾Š²", "scopes": [ "com.plarium" ] } ]
- 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).
- Atlasiet Visas paketes.
- Atrodiet vajadzīgo paketi un pievienojiet to.
Darbs ar avotiem un atkļūdoŔana
Lai avoti bÅ«tu saistÄ«ti ar projektu, jums ir jÄizveido
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:
Skripts no pakotnes ar darba pÄrtraukuma punktu:
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:
- Dodieties uz pakotni pakotnes keÅ”atmiÅÄ.
- Veiciet nepiecieÅ”amÄs izmaiÅas.
- Atjauniniet versiju failÄ
package.json
. - Nosūtīt paku
npm publish --registry *Š°Š“ŃŠµŃ Š“Š¾ Ń ŃŠ°Š½ŠøŠ»ŠøŃŠ° ŠæŠ°ŠŗŠµŃŠ¾Š²*
. - Atjauniniet pakotnes versiju uz laboto, izmantojot UPM saskarni.
PakotÅu importÄÅ”anas konflikti
ImportÄjot pakotnes, var rasties Å”Ädi GUID konflikti:
- 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.
- 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
- GUID atkÄrtota pieŔķirÅ”ana, izmantojot mÅ«su paÅ”u algoritmus, importÄjot visus lÄ«dzekļus, lai novÄrstu sadursmes.
- Visu lÄ«dzekļu pievienoÅ”ana vienam projektam un pÄc tam to sadalÄ«Å”ana paketÄs.
- 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