Maniġer tal-Pakkett tal-Unità

Unity hija pjattaforma li ilha żmien mhux ħażin u qed tevolvi kontinwament. Madankollu, meta taħdem fiha ma 'diversi proġetti fl-istess ħin, xorta tista' tiltaqa 'ma' diffikultajiet biex tuża sorsi komuni (.cs), libreriji (.dll) u assi oħra (immaġini, ħsejjes, mudelli, prefabs). F'dan l-artikolu se nitkellmu dwar l-esperjenza tagħna b'soluzzjoni nattiva għal problema bħal din għall-Unità.

Maniġer tal-Pakkett tal-Unità

Metodi ta' Distribuzzjoni tar-Riżorsi Kondiviżi

Hemm aktar minn mod wieħed kif tuża riżorsi kondiviżi għal proġetti differenti, iżda kull approċċ għandu l-vantaġġi u l-iżvantaġġi tiegħu.

1. Duplikazzjoni - aħna nidduplikaw ir-riżorsi bejn proġetti "bl-idejn."

Pros:

  • Adattat għat-tipi kollha ta 'riżorsi.
  • Ebda problemi ta 'dipendenza.
  • M'hemm l-ebda problemi bil-GUIDs tal-assi.

Cons:

  • Repożitorji ġganti.
  • M'hemm l-ebda possibbiltà ta 'verżjoni.
  • Diffikultà fit-traċċar tal-bidliet fir-riżorsi kondiviżi.
  • Diffikultà biex taġġorna r-riżorsi kondiviżi.

2. sottomoduli Git — distribuzzjoni ta' riżorsi kondiviżi permezz ta' submoduli esterni.

Pros:

  • Tista 'taħdem mas-sorsi.
  • Tista 'tqassam l-assi.
  • Ebda problemi ta 'dipendenza.

Cons:

  • Esperjenza Git meħtieġa.
  • Git mhux faċli ħafna mal-fajls binarji - ser ikollok tikkonnettja LFS.
  • Kontroll tal-aċċess għar-repożitorji.
  • Diffikultà fl-upgrading u downgrading verżjonijiet.
  • Il-ħabtiet GUID huma possibbli u m'hemm l-ebda imġieba ċara min-naħa ta 'Unity biex issolvihom.

3. NuGet - distribuzzjoni ta 'libreriji kondiviżi permezz ta' pakketti NuGet.

Pros:

  • Xogħol konvenjenti bi proġetti li ma jiddependux fuq Unity.
  • Verżjoni konvenjenti u riżoluzzjoni tad-dipendenza.

Cons:

  • Unity ma tistax taħdem ma 'pakketti NuGet barra mill-kaxxa (fuq GitHub tista' ssib NuGet Package Manager għal Unity, li jiffissa dan, iżda hemm xi sfumaturi).
  • Diffikultajiet fid-distribuzzjoni ta' tipi oħra ta' assi.

4. Unity Package Manager - distribuzzjoni ta' riżorsi kondiviżi permezz ta' soluzzjoni nattiva għal Unity.

Pros:

  • Interfaċċja nattiva biex taħdem ma 'pakketti.
  • Protezzjoni kontra l-kitba fuq il-fajls .meta f'pakketti minħabba kunflitti GUID.
  • Possibbiltà ta 'verżjoni.
  • Kapaċità li tqassam kull tip ta 'riżorsi għall-Unità.

Cons:

  • Konflitti GUID xorta jistgħu jseħħu.
  • M'hemm l-ebda dokumentazzjoni għall-implimentazzjoni.

L-aħħar metodu għandu aktar vantaġġi milli żvantaġġi. Madankollu, issa mhux popolari ħafna minħabba n-nuqqas ta 'dokumentazzjoni, u għalhekk se noqogħdu fuqha fid-dettall.

Maniġer tal-Pakkett tal-Unità

Unity Package Manager (UPM) hija għodda għall-ġestjoni tal-pakketti. Ġie miżjud f'Unity 2018.1 u ntuża biss għal pakketti li ġew żviluppati minn Unity Technologies. Madankollu, li tibda bil-verżjoni 2018.3, sar possibbli li jiżdiedu pakketti tad-dwana.

Maniġer tal-Pakkett tal-Unità
Interface tal-Maniġer tal-Pakketti tal-Unità

Il-pakketti ma jispiċċawx fis-sorsi tal-proġett (direttorju tal-Assi). Huma f'direttorju separat %projectFolder%/Library/PackageCache u ma jaffettwawx il-proġett bl-ebda mod, l-uniku isem tagħhom fil-kodiċi tas-sors huwa fil-fajl packages/manifest.json.

Maniġer tal-Pakkett tal-Unità
Pakketti fis-sistema tal-fajl tal-proġett

Sorsi tal-pakkett

UPM jista' juża diversi sorsi ta' pakketti:

1. Sistema ta 'fajls.

Pros:

  • Veloċità tal-implimentazzjoni.
  • Ma teħtieġx għodda ta 'parti terza.

Cons:

  • Diffikultà fil-verżjoni.
  • Aċċess kondiviż għas-sistema tal-fajls huwa meħtieġ għal kull min jaħdem mal-proġett.

2. Repożitorju Git.

Pros:

  • Kulma għandek bżonn huwa repożitorju Git.

Cons:

  • Ma tistax taqleb bejn verżjonijiet mit-tieqa tal-UPM.
  • Ma taħdimx mar-repożitorji Git kollha.

3. repożitorju npm.

Pros:

  • Jappoġġja bis-sħiħ il-funzjonalità tal-UPM u jintuża biex iqassam pakketti uffiċjali tal-Unity.

Cons:

  • Bħalissa tinjora l-verżjonijiet kollha tal-istring tal-pakketti ħlief "-preview".

Hawn taħt se nħarsu lejn l-implimentazzjoni UPM + npm. Dan il-pakkett huwa konvenjenti għaliex jippermettilek taħdem ma 'kwalunkwe tip ta' riżorsi u timmaniġġja l-verżjonijiet tal-pakketti, u wkoll tappoġġja bis-sħiħ l-interface nattiva tal-UPM.

Tista' tużah bħala repożitorju npm Verdaccio. Hemm dettaljat dokumentazzjoni, u huma meħtieġa biss ftit kmandijiet biex imexxuh.

It-twaqqif tal-ambjent

L-ewwel trid tinstalla node.js.

Ħolqien ta 'pakkett

Biex toħloq pakkett, trid tpoġġi l-fajl package.json, li se jiddeskriviha, fid-direttorju bil-kontenut ta' dan il-pakkett. Trid tagħmel dan li ġej:

Mur fid-direttorju tal-proġett li rridu nagħmlu pakkett.

Mexxi l-kmand npm init u daħħal il-valuri meħtieġa waqt id-djalogu. Għall-isem, speċifika l-isem fil-format tad-dominju invers, pereżempju com.plarium.somepackage.
Biex turi b'mod konvenjenti l-isem tal-pakkett, żid il-proprjetà displayName ma package.json u imla.

Peress li npm huwa orjentat lejn js, il-fajl fih il-proprjetajiet prinċipali u skripts li m'għandniex bżonn, li Unity ma tużax. Huwa aħjar li jitneħħew sabiex ma jħajrux id-deskrizzjoni tal-pakkett. Il-fajl għandu jidher xi ħaġa bħal din:

  1. Mur fid-direttorju tal-proġett li rridu nagħmlu pakkett.
  2. Mexxi l-kmand npm init u daħħal il-valuri meħtieġa waqt id-djalogu. Għall-isem, speċifika l-isem fil-format tad-dominju invers, pereżempju com.plarium.somepackage.
  3. Biex turi b'mod konvenjenti l-isem tal-pakkett, żid il-proprjetà displayName ma package.json u imla.
  4. Peress li npm huwa orjentat lejn js, il-fajl fih il-proprjetajiet prinċipali u skripts li m'għandniex bżonn, li Unity ma tużax. Huwa aħjar li jitneħħew sabiex ma jħajrux id-deskrizzjoni tal-pakkett. Il-fajl għandu jidher xi ħaġa bħal din:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Iftaħ Unity u ġġenera fajl .meta għal package.json (Unity ma tarax assi mingħajr fajls .meta, il-pakketti għal Unity jinfetħu għall-qari biss).

Tibgħat pakkett

Biex tibgħat il-pakkett trid tħaddem il-kmand: npm publish --registry *адрес до хранилища пакетов*.

L-installazzjoni u l-aġġornament tal-pakketti permezz tal-Unity Package Manager

Biex iżżid pakkett ma' proġett Unity, għandek bżonn:

  1. Żid mal-fajl manifest.json informazzjoni dwar is-sors tal-pakketti. Biex tagħmel dan għandek bżonn iżżid il-proprjetà scopedRegistries u indika l-ambiti u l-indirizz tas-sors fejn se jiġu mfittxija ambiti speċifiċi.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Mur fl-Unità u iftaħ it-tieqa tal-Maniġer tal-Pakketti (il-ħidma b'pakketti tad-dwana mhix differenti milli taħdem ma 'dawk inkorporati).
  3. Agħżel il-Pakketti Kollha.
  4. Sib il-pakkett li għandek bżonn u żidu.

Maniġer tal-Pakkett tal-Unità

Ħidma ma 'sorsi u debugging

Sabiex is-sorsi jkunu konnessi mal-proġett, għandek bżonn toħloq Definizzjoni ta' l-Assemblea għall-pakkett.

L-użu ta 'pakketti ma jillimitax l-għażliet tiegħek ta' debugging. Madankollu, meta taħdem ma 'pakketti fl-Unity, ma tistax tmur għall-IDE billi tikklikkja fuq żball fil-console jekk l-iżball seħħ fil-pakkett. Dan minħabba l-fatt li Unity ma tarax l-iskripts bħala fajls separati, peress li meta tuża d-Definizzjoni tal-Assembly huma miġbura f'librerija u inklużi fil-proġett. Meta taħdem ma 'sorsi minn proġett, tikklikkja għall-IDE hija disponibbli.

Skript fi proġett b'pakkett konness:

Maniġer tal-Pakkett tal-Unità
Skript mill-pakkett b'waqfa tax-xogħol:

Maniġer tal-Pakkett tal-Unità

Soluzzjonijiet urġenti għall-pakketti

Il-pakketti Unity miżjuda ma' proġett jinqraw biss, iżda jistgħu jiġu editjati fil-cache tal-pakkett. Biex tagħmel dan għandek bżonn:

  1. Mur fil-pakkett fil-cache tal-pakkett.

    Maniġer tal-Pakkett tal-Unità

  2. Agħmel il-bidliet meħtieġa.
  3. Aġġorna l-verżjoni fil-fajl package.json.
  4. Ibgħat pakkett npm publish --registry *адрес до хранилища пакетов*.
  5. Aġġorna l-verżjoni tal-pakkett għal dik ikkoreġuta permezz tal-interface UPM.

Konflitti ta 'importazzjoni ta' pakketti

Il-kunflitti GUID li ġejjin jistgħu jseħħu meta jiġu importati pakketti:

  1. Pakkett - pakkett. Jekk, meta jiġi importat pakkett, jiġi skopert li pakketti diġà miżjuda fihom assi bl-istess GUID, assi b'GUIDs li jaqblu mill-pakkett importat ma jiġux miżjuda mal-proġett.
  2. Pakkett huwa proġett. Jekk, meta jiġi importat pakkett, jiġi skopert li l-proġett fih assi b'GUIDs li jaqblu, allura l-assi mill-pakkett ma jiġux miżjuda mal-proġett. Madankollu, assi li jiddependu minnhom se jibdew jużaw assi mill-proġett.

It-trasferiment tal-assi minn proġett għal pakkett

Jekk tittrasferixxi assi minn proġett għal pakkett waqt li Unity tkun miftuħa, il-funzjonalità tagħha tiġi ppreservata, u links f'assi dipendenti jibdew jużaw l-assi mill-pakkett.

Huwa importanti: Meta tikkopja assi minn proġett għal pakkett, se jseħħ il-kunflitt "Pakkett - Proġett" deskritt fit-taqsima ta' hawn fuq.

Soluzzjonijiet possibbli għall-kunflitti

  1. Assenjazzjoni mill-ġdid tal-GUIDs bl-użu tal-algoritmi tagħna stess meta timporta l-assi kollha biex telimina l-ħabtiet.
  2. Iżżid l-assi kollha għal proġett wieħed u mbagħad taqsamhom f'pakketti.
  3. Il-ħolqien ta' database li jkun fiha l-GUIDs tal-assi kollha u t-twettiq tal-validazzjoni meta tibgħat pakketti.

Konklużjoni

UPM hija soluzzjoni ġdida għad-distribuzzjoni tar-riżorsi kondiviżi f'Unity, li tista' tkun alternattiva denja għall-metodi eżistenti. Ir-rakkomandazzjonijiet deskritti fl-artiklu kienu bbażati fuq każijiet reali. Nittamaw li ssibhom utli.

Sors: www.habr.com

Żid kumment