Unity Package Manager

Unity is in platfoarm dat al in skoft bestiet en konstant evoluearret. As jo ​​​​lykwols mei ferskate projekten tagelyk wurkje, kinne jo noch swierrichheden tsjinkomme by it brûken fan mienskiplike boarnen (.cs), biblioteken (.dll) en oare aktiva (ôfbyldings, lûden, modellen, prefab). Yn dit artikel sille wy prate oer ús ûnderfining mei in native oplossing foar sa'n probleem foar Unity.

Unity Package Manager

Metoaden foar dielde boarneferdieling

D'r is mear dan ien manier om dielde boarnen te brûken foar ferskate projekten, mar elke oanpak hat syn foar- en neidielen.

1. Duplikaasje - wy duplisearje boarnen tusken projekten "mei de hân."

Pros:

  • Geskikt foar alle soarten boarnen.
  • Gjin ôfhinklikensproblemen.
  • Der binne gjin problemen mei asset GUIDs.

Cons:

  • Giant repositories.
  • Der is gjin mooglikheid fan ferzje.
  • Swierrichheid tracking feroarings oan dielde boarnen.
  • Swierrichheid bywurkjen fan dielde boarnen.

2. Git submodules - ferdieling fan dielde boarnen fia eksterne submodules.

Pros:

  • Jo kinne wurkje mei de boarnen.
  • Jo kinne aktiva fersprieden.
  • Gjin ôfhinklikensproblemen.

Cons:

  • Git ûnderfining fereaske.
  • Git is net heul freonlik mei binêre bestannen - jo moatte LFS ferbine.
  • Tagongskontrôle foar repositories.
  • Swierrichheid mei fernijing en downgrading ferzjes.
  • GUID-botsingen binne mooglik en d'r is gjin dúdlik gedrach fan Unity's kant om se op te lossen.

3. NuGet - distribúsje fan dielde bibleteken fia NuGet-pakketten.

Pros:

  • Handich wurk mei projekten dy't net ôfhinklik binne fan Unity.
  • Handige ferzje- en ôfhinklikensresolúsje.

Cons:

  • Unity kin net wurkje mei NuGet-pakketten út 'e doaze (op GitHub kinne jo NuGet Package Manager foar Unity fine, wat dit reparearret, mar d'r binne wat nuânses).
  • Swierrichheden by it fersprieden fan oare soarten aktiva.

4. Unity Package Manager - ferdieling fan dielde boarnen fia in native oplossing foar Unity.

Pros:

  • Native ynterface foar wurkjen mei pakketten.
  • Beskerming tsjin it oerskriuwen fan .meta-bestannen yn pakketten troch GUID-konflikten.
  • Mooglikheid fan ferzje.
  • Mooglikheid om alle soarten boarnen te fersprieden foar Unity.

Cons:

  • GUID-konflikten kinne noch foarkomme.
  • D'r is gjin dokumintaasje foar ymplemintaasje.

De lêste metoade hat mear foardielen as neidielen. It is lykwols net heul populêr no fanwegen it gebrek oan dokumintaasje, en dêrom sille wy der yn detail op dwaen.

Unity Package Manager

Unity Package Manager (UPM) is in ark foar pakketbehear. It waard tafoege yn Unity 2018.1 en waard allinich brûkt foar pakketten dy't waarden ûntwikkele troch Unity Technologies. Begjinnend mei ferzje 2018.3 waard it lykwols mooglik oanpaste pakketten ta te foegjen.

Unity Package Manager
Unity Package Manager Interface

De pakketten einigje net yn 'e projektboarnen (Assets-map). Se steane yn in aparte map %projectFolder%/Library/PackageCache en net beynfloedzje it projekt op hokker wize, harren ienige fermelding yn de boarne koade is yn de triem packages/manifest.json.

Unity Package Manager
Pakketten yn it projektbestânsysteem

Package boarnen

UPM kin ferskate pakketboarnen brûke:

1. Triem systeem.

Pros:

  • Snelheid fan ymplemintaasje.
  • Fereaskje gjin ark fan tredden.

Cons:

  • Swierrichheid yn ferzjeing.
  • Dielde tagong ta it bestânsysteem is fereaske foar elkenien dy't mei it projekt wurket.

2. Git repository.

Pros:

  • Alles wat jo nedich binne is in Git-repository.

Cons:

  • Jo kinne net wikselje tusken ferzjes fia it UPM-finster.
  • Wurket net mei alle Git-repositories.

3. npm repository.

Pros:

  • Unterstützt folslein UPM-funksjonaliteit en wurdt brûkt om offisjele Unity-pakketten te fersprieden.

Cons:

  • Negearret op it stuit alle tekenrige ferzjes fan pakketten útsein "-foarbyld".

Hjirûnder sille wy sjen nei de ymplemintaasje fan UPM + npm. Dizze bondel is handich om't it jo mei elk type boarne kinne wurkje en pakketferzjes beheare, en ek folslein de native UPM-ynterface stipet.

Jo kinne it brûke as in npm-repository Verdaccio. Der is in detaillearre dokumintaasje, en mar in pear kommando's binne nedich om it út te fieren.

It opsetten fan it miljeu

Earst moatte jo ynstallearje node.js.

It meitsjen fan in pakket

Om in pakket te meitsjen, moatte jo it bestân pleatse package.json, dy't it sil beskriuwe, nei de map mei de ynhâld fan dit pakket. Jo moatte it folgjende dwaan:

Gean nei de projektmap dat wy in pakket wolle meitsje.

Run it kommando npm init en fier de fereaske wearden yn yn it dialoochfinster. Foar namme, spesifisearje de namme yn omkearde domein opmaak, bygelyks com.plarium.somepackage.
Om de pakketnamme maklik wer te jaan, foegje de eigenskip displayName ta oan package.json en folje it yn.

Sûnt npm is js-rjochte, befettet it bestân de haad- en skripteigenskippen dy't wy net nedich binne, dy't Unity net brûkt. It is better om se te ferwiderjen om de pakketbeskriuwing net te rommeljen. De triem moat der sa útsjen:

  1. Gean nei de projektmap dat wy in pakket wolle meitsje.
  2. Run it kommando npm init en fier de fereaske wearden yn yn it dialoochfinster. Foar namme, spesifisearje de namme yn omkearde domein opmaak, bygelyks com.plarium.somepackage.
  3. Om de pakketnamme maklik wer te jaan, foegje de eigenskip displayName ta oan package.json en folje it yn.
  4. Sûnt npm is js-rjochte, befettet it bestân de haad- en skripteigenskippen dy't wy net nedich binne, dy't Unity net brûkt. It is better om se te ferwiderjen om de pakketbeskriuwing net te rommeljen. De triem moat der sa útsjen:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Iepenje Unity en generearje in .meta-bestân foar package.json (Unity sjocht gjin aktiva sûnder .meta-bestannen, pakketten foar Unity wurde allinich lêzen iepene).

It ferstjoeren fan in pakket

Om it pakket te stjoeren moatte jo it kommando útfiere: npm publish --registry *адрес до хранилища пакетов*.

Ynstallearje en bywurkje fan pakketten fia Unity Package Manager

Om in pakket ta te foegjen oan in Unity-projekt, hawwe jo nedich:

  1. Tafoegje oan triem manifest.json ynformaasje oer de boarne fan de pakketten. Om dit te dwaan moatte jo it pân tafoegje scopedRegistries en jouwe de scopes en it boarneadres oan wêr't spesifike scopes sille wurde socht.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Gean nei Unity en iepenje it Package Manager-finster (wurkje mei oanpaste pakketten is net oars as wurkje mei ynboude).
  3. Selektearje Alle pakketten.
  4. Fyn it pakket dat jo nedich binne en foegje it ta.

Unity Package Manager

Wurkje mei boarnen en debuggen

Om de boarnen te ferbinen mei it projekt, moatte jo oanmeitsje Assembly Definysje foar it pakket.

It brûken fan pakketten beheint jo opsjes foar debuggen net. As jo ​​​​lykwols wurkje mei pakketten yn Unity, kinne jo net nei de IDE gean troch te klikken op in flater yn 'e konsole as de flater barde yn it pakket. Dit is te tankjen oan it feit dat Unity skripts net as aparte bestannen sjocht, om't se by it brûken fan de Assembly Definition wurde sammele yn in bibleteek en opnommen yn it projekt. By it wurkjen mei boarnen fan in projekt, klikke nei de IDE is beskikber.

Skript yn in projekt mei in ferbûn pakket:

Unity Package Manager
Skript út it pakket mei in wurkjend brekpunt:

Unity Package Manager

Dringende reparaasjes foar pakketten

Unity-pakketten taheakke oan in projekt binne allinich-lês, mar kinne wurde bewurke yn it pakket-cache. Om dit te dwaan hawwe jo nedich:

  1. Gean nei pakket yn pakketcache.

    Unity Package Manager

  2. Meitsje de nedige feroarings.
  3. Update ferzje yn triem package.json.
  4. Stjoer pakket npm publish --registry *адрес до хранилища пакетов*.
  5. Update de pakketferzje nei de korrizjearre fia de UPM-ynterface.

Pakket ymport konflikten

De folgjende GUID-konflikten kinne foarkomme by it ymportearjen fan pakketten:

  1. Pakket - pakket. As, by it ymportearjen fan in pakket, ûntdutsen wurdt dat al tafoege pakketten aktiva befetsje mei deselde GUID, sille aktiva mei oerienkommende GUID's fan it ymporteare pakket net wurde tafoege oan it projekt.
  2. In pakket is in projekt. As, by it ymportearjen fan in pakket, ûntdutsen wurdt dat it projekt aktiva befettet mei oerienkommende GUID's, dan wurde de aktiva fan it pakket net tafoege oan it projekt. Assets dy't lykwols fan har ôfhingje, sille aktiva fan it projekt begjinne te brûken.

It oerdragen fan aktiva fan in projekt nei in pakket

As jo ​​in asset oerdrage fan in projekt nei in pakket wylst Unity iepen is, sil syn funksjonaliteit bewarre wurde, en keppelings yn ôfhinklike aktiva sille begjinne mei it brûken fan de asset út it pakket.

wichtich: By it kopiearjen fan in asset fan in projekt nei in pakket, sil it "Package - Project" konflikt beskreaun yn 'e seksje hjirboppe foarkomme.

Mooglike oplossingen foar konflikten

  1. GUID's opnij tawize mei ús eigen algoritmen by it ymportearjen fan alle aktiva om botsingen te eliminearjen.
  2. Alle aktiva tafoegje oan ien projekt en dan ferdield yn pakketten.
  3. It meitsjen fan in databank mei de GUID's fan alle aktiva en it útfieren fan falidaasje by it ferstjoeren fan pakketten.

konklúzje

UPM is in nije oplossing foar it fersprieden fan dielde boarnen yn Unity, dy't in weardich alternatyf kin wêze foar besteande metoaden. De oanbefellings beskreaun yn it artikel wiene basearre op echte gefallen. Wy hoopje dat jo se nuttich fine.

Boarne: www.habr.com

Add a comment