Unity Package Manager

Unity — platvorm, mis eksisteerib juba pikka aega ja areneb pidevalt. Siiski, töötades selles mitme projektiga korraga, vĂ”ib endiselt esineda keerukusi ĂŒhiste lĂ€htekohtade (.cs), raamatukogude (.dll) ja teiste varade (pildid, helid, mudelid, prefabad) kasutamisel. Selles artiklis rÀÀgime meie kogemusest sellise probleemi lahendamiseks Unitys, kasutades kohalikke lahendusi.

Unity Package Manager

Ühiste ressursside levitamise meetodid

On rohkem kui ĂŒks viis ĂŒhiste ressursside kasutamiseks erinevates projektides, kuid igal lĂ€henemisel on oma plussid ja miinused.

1. Dubleerimine — „kĂ€tega“ dubleerime ressursid projektide vahel.

Plussid:

  • Sobib kĂ”ikide ressursitĂŒĂŒpide jaoks.
  • Probleeme sĂ”ltuvustega ei esine.
  • Probleeme varade GUID’idega ei esine.

Miinused:

  • Hiiglaslikud hoidlad.
  • Ei ole versiooni tegemise vĂ”imalust.
  • Ressursside muudatuste jĂ€lgimise keerukus.
  • Ressursside vĂ€rskendamise keerukus.

2. Git alammoodulid — ĂŒhiste ressursside levitamine vĂ€liste alammoodulite kaudu.

Plussid:

  • Saab töötada lĂ€htekohtadega.
  • Saab levitada varasid.
  • Probleeme sĂ”ltuvustega ei esine.

Miinused:

  • On vajalik oskus töötada Gitiga.
  • Git ei ole binaarsete failidega vĂ€ga sĂ”bralik — tuleb kasutada LFS-i.
  • JuurdepÀÀsu piiramine hoidlatele.
  • Probleemid versiooni tĂ”stmisel ja langetamisel.
  • GUID’ide kollisjonid ja Unity ebaselge kĂ€itumine nende lahendamisel.

3. NuGet — ĂŒhiste raamatukogude levitamine NuGet-packete kaudu.

Plussid:

  • Mugav töö projektidega, mis ei sĂ”ltu Unityst.
  • Mugav versioonide haldamine ja sĂ”ltuvuste lahendamine.

Miinused:

  • Unity ei oska NuGet-pakette „otsast peale” kasutada (GitHubis on saadaval NuGet Package Manager for Unity, mis selle probleemi lahendab, kuid on nĂŒansse).
  • ÜlejÀÀnud varade levitamise keerukused.

4. Unity Package Manager — ĂŒhiste ressursside levitamine Unity jaoks kohaliku lahenduse kaudu.

Plussid:

  • Kohalik liides pakettide haldamiseks.
  • Kaitse .meta-failide ĂŒle kirjutamise eest pakettides, kui GUID’id on konfliktis.
  • Versioonimise vĂ”imalus.
  • VĂ”imalus levitada kĂ”iki ressursitĂŒĂŒpe Unity jaoks.

Miinused:

  • GUID’ide konfliktid vĂ”ivad endiselt aset leida.
  • Dokumentatsiooni puudumine rakendamiseks.

Viimane meetod omab rohkem eeliseid kui puudusi. Siiski ei ole see praegu vĂ€ga populaarne dokumentatsiooni puudumise tĂ”ttu, seega peatume sellel ĂŒksikasjalikumalt.

Unity Package Manager

Unity Package Manager (edasi UPM) on pakettide haldamise tööriist. Seda lisati Unity 2018.1 ja seda kasutati ainult Unity Technologies'i arendatud pakettide jaoks. Kuid alates versioonist 2018.3 on vÔimalik lisada kohandatud pakette.

Unity Package Manager
Unity Package Manageri liides

Pakette ei salvestata projekti lÀhtefailidesse (Assets katalooge). Need asuvad eraldi kataloogis %projectFolder%/Library/PackageCache , ega mÔjuta projekti, nende ainus mainimine lÀhtefailides on failis packages/manifest.json.

Unity Package Manager
Pakettide asukoht projekti failisĂŒsteemis

Pakettide allikad

UPM vÔib kasutada mitmeid pakettide allikaid:

1. FailisĂŒsteem.

Plussid:

  • Teostuse kiirus.
  • Ei nĂ”ua kolmandate osapoolte tööriistu.

Miinused:

  • Versioonihalduse keerukus.
  • NĂ”uab, et kĂ”ik, kes projektiga töötavad, pÀÀseksid failisĂŒsteemile juurde.

2. Git-repositoorium.

Plussid:

  • NĂ”utav on ainult Git-repositoorium.

Miinused:

  • Ei saa versioonide vahel vahetada UPM aknas.
  • Ei toimi kĂ”ikide Git-repositooriumidega.

3. npm-repositoorium.

Plussid:

  • Toetab tĂ€ielikult UPM funktsionaalsust ja seda kasutatakse ametlike Unity paketide jaotamiseks.

Miinused:

  • Praegu ignoreerib see kĂ”ikide pakettide reaalversioonid, vĂ€lja arvatud «-preview».

Allpool vaatame UPM + npm rakendust. See kombinatsioon on mugav, kuna vĂ”imaldab töötada mis tahes ressursitĂŒĂŒpidega ja hallata pakettide versioone ning toetab tĂ€ielikult UPM kohalikku liidest.

Npm-repositooriumina saab kasutada Verdaccio. Selle kohta on olemas pÔhjalik dokumentatsioon, ja selle kÀivitamiseks on vajalik vaid paar kÀsku.

Keskkonna seadistamine

Esialgu tuleb installida node.js.

Paketi loomine

Paketi loomiseks tuleb faili package.json, mis seda kirjeldab, asetada selle paketi sisu katalooge. Peab tegema jÀrgmist:

Minna projekti katalooge, mille soovime paketiks muuta.

Teha kÀsk npm init ja dialooge kÀies sisestada vajalikud vÀÀrtused. Nime jaoks mÀÀrake nimi pööratud domeeni formaadis, nÀiteks com.plarium.somepackage.
Paketi nime mugavaks kuvamiseks — lisage properties displayName faili package.json ja tĂ€itke see.

Kuna npm on js-orienteeritud, sisaldab fail meile mittevajalikke omadusi main ja scripts, mida Unity ei kasuta. Parim on need eemaldada, et mitte paketi kirjeldust segadusse ajada. Fail peaks vÀlja nÀgema jÀrgmine:

  1. Minna projekti katalooge, mille soovime paketiks muuta.
  2. Teha kÀsk npm init ja dialooge kÀies sisestada vajalikud vÀÀrtused. Nime jaoks mÀÀrake nimi pööratud domeeni formaadis, nÀiteks com.plarium.somepackage.
  3. Paketi nime mugavaks kuvamiseks — lisage properties displayName faili package.json ja tĂ€itke see.
  4. Kuna npm on js-orienteeritud, sisaldab fail meile mittevajalikke omadusi main ja scripts, mida Unity ei kasuta. Parim on need eemaldada, et mitte paketi kirjeldust segadusse ajada. Fail peaks vÀlja nÀgema jÀrgmine:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Ava avatud Unity ja genereerida .meta fail package.json jaoks (Unity ei nĂ€e varasid ilma .meta failideta, Unity paketid avatakse ainult lugemisreĆŸiimis).

Paketie saatmine

Paketi saatmiseks tuleb tÀita kÀsk: npm publish --registry *pakettide hoidla aadress*.

Pakettide installimine ja uuendamine lÀbi Unity Package Manageri

Paketi lisamiseks Unity projekti tuleb:

  1. TÀitke fail manifest.json teave paketide allika kohta. Selleks tuleb lisada omadus scopedRegistries ja mÀÀrata skoopid ja allika aadress, mille kaudu otsitakse konkreetseid skoopide.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "pakettide hoidla aadress",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Liikuge Unity'sse ja avage Package Manageri aken (töö kohandatud pakettidega ei erine sisseehitatud töötamisest).
  3. Vali KÔik paketid.
  4. Leia vajalik pakett ja lisa see.

Unity Package Manager

Allikakoodide töötamine ja silumine

Kuna allikakoodid peavad projektiga ĂŒhenduma, tuleb luua Assembly Definition paketi jaoks.

Pakettide kasutamine ei piira silumise vĂ”imalusi. Kuid Unity's töötades pakettidega ei saa IDE'sse klikkida veale konsoolis, kui viga tekkis paketis. See on seotud sellega, et Unity ei nĂ€e skripte eraldi failidena ning Assembly Definition'i kasutamisel kogutakse need teegiks ja ĂŒhendatakse projekti. Allikakoodide töötamisel projekti seest on IDE'sse klikkides pÀÀs saadaval.

Projektis, kus on ĂŒhendatud pakett, skript:

Unity Package Manager
Paketi skript koos töötava murdepunktiga:

Unity Package Manager

Kiirete muudatuste tegemine pakettidesse

Projekti lisatud Unity paketid on avatud ainult lugemiseks, kuid neid saab muuta paketide vahemÀlus. Selleks tuleb:

  1. Liikuge paketti pakettide vahemÀlus.

    Unity Package Manager

  2. Tee vajalikud muudatused.
  3. Uuendage versioon faili package.json.
  4. Saada pakett npm publish --registry *pakettide hoidla aadress*.
  5. Uuendage paketi versioon parandatud lÀbi UPM liidese.

Pakettide importimise konfliktid

Pakettide importimise kÀigus vÔivad ilmneda jÀrgmised GUID konfliktid:

  1. Pakett — pakett. Kui paketi importimise kĂ€igus tuvastatakse, et juba lisatud pakettides on varasid sama GUID'iga, siis importitava paketi GUID'iga varasid ei lisata projekti.
  2. Paket on projekt. Kui paketi importimisel selgub, et projektis on varasid, mille GUIDid kattuvad, siis paketi varad ei lisandu projekti. Siiski hakkavad sÔltuvad varad kasutama projekti varasid.

Varade ĂŒlekanne projektist paketti

Kui varandust projektist paketti ĂŒle kanda avatud Unity's, sĂ€ilib selle funktsionaalsus ning sĂ”ltuvate varade lingid hakkavad kasutama varandust paketist.

Oluline: kui varandust projektist paketti kopeerida, toimub konflikt "Paket - projekt", nagu eelnevas osas on kirjeldatud.

VÔimalikud konfliktide lahendused

  1. GUIDide taas mÀÀramine enda algoritmide jÀrgi, importides kÔik varad, et vÀltida kattumisi.
  2. KĂ”ikide varade lisamine ĂŒhte projekti, mille jĂ€rgnevalt jagatakse pakettideks.
  3. Andmebaasi loomine, kuhu on kogutud kÔigi varade GUIDid ja valideerimine pakettide saatmise ajal.

KokkuvÔte

UPM on uus lahendus, et jagada ĂŒldisi ressursse Unity's, mis vĂ”ib olla vÀÀriline alternatiiv olemasolevatele meetoditele. Artiklis toodud soovitused on sĂŒndinud reaalsest praktiseerimisest. Loodame, et need on teile kasulikud.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster