Unity Package Manager

Unity on alusta, joka on ollut olemassa jo jonkin aikaa ja kehittyy jatkuvasti. Kuitenkin, kun työskentelet siinä useiden projektien kanssa samanaikaisesti, voit silti kohdata vaikeuksia käyttää yleisiä lähteitä (.cs), kirjastoja (.dll) ja muita resursseja (kuvat, äänet, mallit, esivalmisteet). Tässä artikkelissa puhumme kokemuksistamme Unityn natiiviratkaisusta tällaiseen ongelmaan.

Unity Package Manager

Jaettujen resurssien jakelumenetelmät

On olemassa useampi kuin yksi tapa käyttää yhteisiä resursseja eri projekteihin, mutta jokaisella lähestymistavalla on hyvät ja huonot puolensa.

1. Monistaminen – monistamme resurssit projektien välillä "käsin".

Plussat:

  • Sopii kaikentyyppisille resursseille.
  • Ei riippuvuusongelmia.
  • Omaisuuden GUID:ien kanssa ei ole ongelmia.

Miinukset:

  • Jättiläiset arkistot.
  • Versiointimahdollisuutta ei ole.
  • Vaikeus seurata jaettujen resurssien muutoksia.
  • Vaikeus päivittää jaettuja resursseja.

2. Git-alimoduulit — yhteisten resurssien jakaminen ulkoisten alimoduulien kautta.

Plussat:

  • Voit työskennellä lähteiden kanssa.
  • Voit jakaa omaisuutta.
  • Ei riippuvuusongelmia.

Miinukset:

  • Kokemusta vaaditaan.
  • Git ei ole kovin ystävällinen binääritiedostojen kanssa - sinun on yhdistettävä LFS.
  • Tietovarastojen kulunvalvonta.
  • Vaikeuksia versioiden päivittämisessä ja alenemisessa.
  • GUID-törmäykset ovat mahdollisia, eikä Unity ole pystynyt ratkaisemaan niitä selkeästi.

3. NuGet - jaettujen kirjastojen jakelu NuGet-pakettien kautta.

Plussat:

  • Kätevä työskentely projekteissa, jotka eivät riipu Unitysta.
  • Kätevä versiointi ja riippuvuusratkaisu.

Miinukset:

  • Unity ei voi toimia valmiiden NuGet-pakettien kanssa (GitHubista löytyy NuGet Package Manager for Unity, joka korjaa tämän, mutta siinä on joitain vivahteita).
  • Vaikeudet muun tyyppisen omaisuuden jakelussa.

4. Unity Package Manager - jaettujen resurssien jakelu Unityn alkuperäisen ratkaisun kautta.

Plussat:

  • Natiivi käyttöliittymä pakettien kanssa työskentelemiseen.
  • Suojaus pakettien .meta-tiedostojen korvaamiselta GUID-ristiriitojen vuoksi.
  • Mahdollisuus versiointiin.
  • Kyky jakaa kaikenlaisia ​​resursseja Unitylle.

Miinukset:

  • GUID-ristiriitoja voi silti esiintyä.
  • Toteutusta varten ei ole dokumentaatiota.

Jälkimmäisellä menetelmällä on enemmän etuja kuin haittoja. Se ei kuitenkaan ole nyt kovin suosittu dokumentaation puutteen vuoksi, ja siksi käsittelemme sitä yksityiskohtaisesti.

Unity Package Manager

Unity Package Manager (UPM) on paketinhallintatyökalu. Se lisättiin Unity 2018.1:een ja sitä käytettiin vain Unity Technologiesin kehittämille paketeille. Versiosta 2018.3 alkaen oli kuitenkin mahdollista lisätä mukautettuja paketteja.

Unity Package Manager
Unity Package Manager -liittymä

Paketit eivät päädy projektilähteisiin (Assets-hakemisto). Ne ovat erillisessä hakemistossa %projectFolder%/Library/PackageCache eivätkä ne vaikuta projektiin millään tavalla, niiden ainoa maininta lähdekoodissa on tiedostossa packages/manifest.json.

Unity Package Manager
Paketit projektitiedostojärjestelmässä

Pakettien lähteet

UPM voi käyttää useita pakettilähteitä:

1. Tiedostojärjestelmä.

Plussat:

  • Toteutuksen nopeus.
  • Ei vaadi kolmannen osapuolen työkaluja.

Miinukset:

  • Vaikeus versioinnissa.
  • Jaettu pääsy tiedostojärjestelmään vaaditaan kaikilta projektin parissa työskenteleviltä.

2. Git-arkisto.

Plussat:

  • Tarvitset vain Git-arkiston.

Miinukset:

  • Et voi vaihtaa versioiden välillä UPM-ikkunan kautta.
  • Ei toimi kaikkien Git-varastojen kanssa.

3. npm arkisto.

Plussat:

  • Tukee täysin UPM-toiminnallisuutta ja sitä käytetään virallisten Unity-pakettien jakeluun.

Miinukset:

  • Tällä hetkellä ohittaa kaikki pakettien merkkijonoversiot paitsi "-preview".

Alla tarkastellaan UPM + npm -toteutusta. Tämä paketti on kätevä, koska sen avulla voit työskennellä kaikentyyppisten resurssien kanssa ja hallita pakettiversioita, ja se tukee myös täysin alkuperäistä UPM-käyttöliittymää.

Voit käyttää sitä npm-tietovarastona Verdaccio. Siellä on yksityiskohtainen dokumentointi, ja sen suorittamiseen tarvitaan vain muutama komento.

Ympäristön asetukset

Ensin sinun on asennettava Node.js.

Paketin luominen

Jos haluat luoda paketin, sinun on asetettava tiedosto package.json, joka kuvaa sen, hakemistoon, jossa on tämän paketin sisältö. Sinun on toimittava seuraavasti:

Mene projektihakemistoon, josta haluamme tehdä paketin.

Suorita npm init -komento ja syötä vaaditut arvot valintaikkunassa. Määritä nimeksi nimi käänteisessä toimialueen muodossa, esimerkiksi com.plarium.somepackage.
Jos haluat näyttää paketin nimen kätevästi, lisää displayName-ominaisuus package.json-tiedostoon ja täytä se.

Koska npm on js-suuntautunut, tiedosto sisältää main- ja scripts-ominaisuudet, joita emme tarvitse, joita Unity ei käytä. On parempi poistaa ne, jotta paketin kuvaus ei sotkeudu. Tiedoston pitäisi näyttää suunnilleen tältä:

  1. Mene projektihakemistoon, josta haluamme tehdä paketin.
  2. Suorita npm init -komento ja syötä vaaditut arvot valintaikkunassa. Määritä nimeksi nimi käänteisessä toimialueen muodossa, esimerkiksi com.plarium.somepackage.
  3. Jos haluat näyttää paketin nimen kätevästi, lisää displayName-ominaisuus package.json-tiedostoon ja täytä se.
  4. Koska npm on js-suuntautunut, tiedosto sisältää main- ja scripts-ominaisuudet, joita emme tarvitse, joita Unity ei käytä. On parempi poistaa ne, jotta paketin kuvaus ei sotkeudu. Tiedoston pitäisi näyttää suunnilleen tältä:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Avaa Unity ja luo .meta-tiedosto package.json-tiedostolle (Unity ei näe omaisuutta ilman .meta-tiedostoja, Unity-paketit avataan vain luku -tilassa).

Paketin lähettäminen

Lähettääksesi paketin sinun on suoritettava komento: npm publish --registry *адрес до хранилища пакетов*.

Pakettien asennus ja päivitys Unity Package Managerin kautta

Jos haluat lisätä paketin Unity-projektiin, tarvitset:

  1. Lisää tiedostoon manifest.json tiedot pakettien lähteestä. Tätä varten sinun on lisättävä omaisuus scopedRegistries ja osoita laajuudet ja lähdeosoite, josta tietyt laajuudet haetaan.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Siirry Unityyn ja avaa Package Manager -ikkuna (muokattujen pakettien käyttäminen ei eroa työskentelystä sisäänrakennettujen pakettien kanssa).
  3. Valitse Kaikki paketit.
  4. Etsi tarvitsemasi paketti ja lisää se.

Unity Package Manager

Työskentely lähteiden kanssa ja virheenkorjaus

Jotta lähteet voidaan yhdistää projektiin, sinun on luotava Kokoonpanon määritelmä pakettia varten.

Pakettien käyttö ei rajoita virheenkorjausvaihtoehtojasi. Kun työskentelet pakettien kanssa Unityssa, et voi kuitenkaan siirtyä IDE:hen napsauttamalla konsolissa olevaa virhettä, jos virhe tapahtui paketissa. Tämä johtuu siitä, että Unity ei näe skriptejä erillisinä tiedostoina, koska Assembly Definitionia käytettäessä ne kerätään kirjastoon ja sisällytetään projektiin. Kun työskentelet projektin lähteiden kanssa, IDE on käytettävissä napsauttamalla.

Käsikirjoitus projektissa, jossa on yhdistetty paketti:

Unity Package Manager
Skripti paketista toimivalla keskeytyspisteellä:

Unity Package Manager

Kiireelliset korjaukset pakkauksiin

Projektiin lisätyt Unity-paketit ovat vain luku -tilassa, mutta niitä voidaan muokata pakettivälimuistissa. Tätä varten tarvitset:

  1. Siirry pakettivälimuistissa olevaan pakettiin.

    Unity Package Manager

  2. Tee tarvittavat muutokset.
  3. Päivitä versio tiedostossa package.json.
  4. Lähetä paketti npm publish --registry *адрес до хранилища пакетов*.
  5. Päivitä paketin versio korjattuun versioon UPM-rajapinnan kautta.

Pakettien tuontiristiriidat

Seuraavat GUID-ristiriidat voivat ilmetä paketteja tuottaessa:

  1. Paketti - paketti. Jos paketin tuonnin yhteydessä havaitaan, että jo lisätyt paketit sisältävät resursseja, joilla on sama GUID, tuodusta paketista vastaavia GUID-tunnisteita sisältäviä resursseja ei lisätä projektiin.
  2. Paketti on projekti. Jos paketin tuonnin yhteydessä havaitaan, että projekti sisältää resursseja, joilla on vastaavat GUID-tunnukset, paketin resursseja ei lisätä projektiin. Niistä riippuvaiset varat kuitenkin alkavat käyttää projektin omaisuutta.

Omaisuuden siirto projektista pakettiin

Jos siirrät resurssin projektista pakettiin Unityn ollessa auki, sen toiminnallisuus säilyy ja linkit riippuvaisiin resursseihin alkavat käyttää paketin omaisuutta.

On tärkeää: Kun resurssia kopioidaan projektista pakettiin, tapahtuu yllä olevassa osiossa kuvattu "Paketti - Projekti" -ristiriita.

Mahdollisia ratkaisuja konflikteihin

  1. Määritämme GUID-tunnukset uudelleen omilla algoritmeillamme tuodessasi kaikkia resursseja törmäysten välttämiseksi.
  2. Kaikkien resurssien lisääminen yhteen projektiin ja sen jakaminen paketteihin.
  3. Luodaan tietokanta, joka sisältää kaikkien resurssien GUID-tunnukset, ja suorittamalla validoinnin paketteja lähetettäessä.

Johtopäätös

UPM on uusi ratkaisu yhteisten resurssien jakamiseen Unityssa, joka voi olla arvokas vaihtoehto olemassa oleville menetelmille. Artikkelissa kuvatut suositukset perustuivat todellisiin tapauksiin. Toivomme, että ne ovat hyödyllisiä.

Lähde: will.com

Lisää kommentti