Eenheidspakketbestuurder

Unity is 'n platform wat al lank bestaan ​​en voortdurend ontwikkel. Wanneer jy egter met verskeie projekte gelyktydig werk, kan jy steeds probleme ondervind met die gebruik van algemene bronne (.cs), biblioteke (.dll) en ander bates (prente, klanke, modelle, prefabs). In hierdie artikel sal ons praat oor ons ervaring met 'n inheemse oplossing vir so 'n probleem vir Unity.

Eenheidspakketbestuurder

Metodes vir gedeelde hulpbronverspreiding

Daar is meer as een manier om gedeelde hulpbronne vir verskillende projekte te gebruik, maar elke benadering het sy voor- en nadele.

1. Duplisering – “met die hand” dupliseer ons hulpbronne tussen projekte.

Pros:

  • Geskik vir alle soorte hulpbronne.
  • Geen afhanklikheidskwessies nie.
  • Geen probleem met bate-GUID's nie.

Nadele:

  • Reuse bewaarplekke.
  • Daar is geen opsie vir weergawes nie.
  • Sukkel om veranderinge aan gedeelde hulpbronne op te spoor.
  • Sukkel om gedeelde hulpbronne op te dateer.

2. Git submodules - verspreiding van gedeelde hulpbronne deur eksterne submodules.

Pros:

  • Jy kan met bronne werk.
  • Jy kan bates versprei.
  • Geen afhanklikheidskwessies nie.

Nadele:

  • Git-vaardighede vereis.
  • Git is nie baie vriendelik met binêre lêers nie - jy moet LFS insluit.
  • Toegangsbeheer vir bewaarplekke.
  • Moeilik op- en afgradeer.
  • GUID-botsings is moontlik en daar is geen ondubbelsinnige gedrag aan die kant van Unity om dit op te los nie.

3. NuGet - verspreiding van gedeelde biblioteke deur NuGet-pakkette.

Pros:

  • Gerieflike werk met projekte wat nie van Unity afhanklik is nie.
  • Gerieflike weergawe en afhanklikheidsresolusie.

Nadele:

  • Unity weet nie hoe om met NuGet-pakkette uit die boks te werk nie (jy kan NuGet Package Manager for Unity op GitHub vind, wat dit regstel, maar daar is nuanses).
  • Probleme met die verspreiding van ander soorte bates.

4. Unity Package Manager - verspreiding van gedeelde hulpbronne deur 'n inheemse oplossing vir Unity.

Pros:

  • Inheemse koppelvlak om met pakkette te werk.
  • Beskerming teen die oorskryf van .meta-lêers in pakkette in geval van GUID-konflik.
  • Weergawe vermoë.
  • Vermoë om allerhande hulpbronne vir Unity te versprei.

Nadele:

  • GUID-konflikte kan steeds voorkom.
  • Daar is geen dokumentasie vir die implementering nie.

Laasgenoemde metode het meer voordele as nadele. Dit is egter nie nou baie gewild nie weens die gebrek aan dokumentasie, en daarom sal ons in detail daaroor stilstaan.

Eenheidspakketbestuurder

Unity Package Manager (hierna verwys as UPM) is 'n pakketbestuurhulpmiddel. Dit is bygevoeg in Unity 2018.1 en is slegs gebruik vir pakkette wat deur Unity Technologies ontwikkel is. Vanaf weergawe 2018.3 het dit egter moontlik geword om pasgemaakte pakkette by te voeg.

Eenheidspakketbestuurder
Unity Package Manager Interface

Pakkette beland nie in die projekbronne (Batesgids) nie. Hulle is in 'n aparte gids. %projectFolder%/Library/PackageCache en moenie die projek op enige manier beïnvloed nie, hul enigste vermelding in die bronkode is in die lêer packages/manifest.json.

Eenheidspakketbestuurder
Pakkette in die projeklêerstelsel

Pakket bronne

UPM kan verskeie pakketbronne gebruik:

1. Lêerstelsel.

Pros:

  • Implementering spoed.
  • Vereis geen derdeparty-instrumente nie.

Nadele:

  • weergawe kompleksiteit.
  • Gedeelde toegang tot die lêerstelsel word vereis vir almal wat met die projek werk.

2. Git-bewaarplek.

Pros:

  • Al wat jy nodig het, is 'n Git-bewaarplek.

Nadele:

  • Jy kan nie deur die UPM-venster tussen weergawes wissel nie.
  • Werk nie met alle Git-bewaarplekke nie.

3. npm-bewaarplek.

Pros:

  • Ondersteun UPM-funksionaliteit ten volle en word gebruik om amptelike Unity-pakkette te versprei.

Nadele:

  • Ignoreer tans alle string weergawes van pakkette behalwe "-voorskou".

Ons sal hieronder na die implementering van UPM + npm kyk. Hierdie bundel is gerieflik omdat dit jou toelaat om met enige soort hulpbronne te werk en pakketweergawes te bestuur, en ondersteun ook die oorspronklike UPM-koppelvlak ten volle.

As 'n npm-bewaarplek kan u gebruik Verdaccio. Dit het 'n gedetailleerde dokumentasie, en dit neem letterlik 'n paar opdragte om dit uit te voer.

Omgewingsopstelling

Eerstens moet jy installeer node.js.

Skep 'n pakket

Om 'n pakket te skep, moet jy die lêer sit package.json, wat dit sal beskryf, na die gids met die inhoud van hierdie pakket. Jy moet die volgende doen:

Gaan na die projekgids wat ons 'n pakket wil maak.

Voer die npm init-opdrag uit en voer die vereiste waardes in tydens die dialoog. Vir naam, spesifiseer die naam in omgekeerde domeinformaat, byvoorbeeld com.plarium.somepackage.
Vir gerieflike vertoning van die pakketnaam, voeg die displayName-eienskap by package.json en vul dit in.

Aangesien npm js-georiënteerd is, bevat die lêer die hoof- en skripteienskappe wat ons nie nodig het nie, wat Unity nie gebruik nie. Dit is beter om dit te verwyder om nie die beskrywing van die pakket te verstop nie. Die lêer moet iets soos volg lyk:

  1. Gaan na die projekgids wat ons 'n pakket wil maak.
  2. Voer die npm init-opdrag uit en voer die vereiste waardes in tydens die dialoog. Vir naam, spesifiseer die naam in omgekeerde domeinformaat, byvoorbeeld com.plarium.somepackage.
  3. Vir gerieflike vertoning van die pakketnaam, voeg die displayName-eienskap by package.json en vul dit in.
  4. Aangesien npm js-georiënteerd is, bevat die lêer die hoof- en skripteienskappe wat ons nie nodig het nie, wat Unity nie gebruik nie. Dit is beter om dit te verwyder om nie die beskrywing van die pakket te verstop nie. Die lêer moet iets soos volg lyk:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Maak Unity oop en genereer 'n .meta-lêer vir package.json (Unity sien nie bates sonder .meta-lêers nie, Unity-pakkette maak leesalleen oop).

Stuur 'n pakkie

Om 'n pakket te stuur, moet jy die opdrag uitvoer: npm publish --registry *адрес до хранилища пакетов*.

Installering en opdatering van pakkette deur die Unity Package Manager

Om 'n pakket by 'n Unity-projek te voeg, moet jy:

  1. Skryf na lêer manifest.json inligting oor die bron van die pakkette. Om dit te doen, moet jy 'n eiendom byvoeg scopedRegistries en dui die bestekke aan en die adres van die bron waarvolgens spesifieke bestekke gesoek sal word.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Gaan na Unity en maak die Pakketbestuurder-venster oop (om met pasgemaakte pakkette te werk verskil nie van om met ingeboude pakkette te werk nie).
  3. Kies Alle pakkette.
  4. Soek die vereiste pakket en voeg dit by.

Eenheidspakketbestuurder

Werk met bronne en ontfouting

Om die bronne aan die projek te verbind, moet jy skep Vergadering Definisie vir die pakkie.

Die gebruik van pakkette beperk nie die omvang vir ontfouting nie. Wanneer u egter met pakkette in Unity werk, kan u nie na die IDE gaan deur op 'n fout in die konsole te klik as die fout in die pakket voorgekom het nie. Dit is omdat Unity nie die skrifte as aparte lêers sien nie, want wanneer die Assembly Definisie gebruik word, word dit in 'n biblioteek versamel en by die projek ingesluit. Wanneer daar met bronne van 'n projek gewerk word, is 'n deurklik-oorgang na die IDE beskikbaar.

Skrip in 'n projek met 'n gekoppelde pakket:

Eenheidspakketbestuurder
Skrip uit die pakket met 'n werkende breekpunt:

Eenheidspakketbestuurder

Dringende regstellings aan pakkette

Eenheidspakkette wat by die projek gevoeg word, is leesalleen, maar kan in die pakketkas geredigeer word. Hiervoor benodig jy:

  1. Gaan na die pakket in die pakketkas.

    Eenheidspakketbestuurder

  2. Maak die nodige veranderinge.
  3. Dateer weergawe in lêer op package.json.
  4. stuur pakkie npm publish --registry *адрес до хранилища пакетов*.
  5. Dateer die pakketweergawe op na die gekorrigeerde weergawe deur die UPM-koppelvlak.

Pakketinvoerkonflik

Wanneer pakkette ingevoer word, kan die volgende GUID-konflik voorkom:

  1. Pakket is 'n pakket. Indien, wanneer 'n pakket ingevoer word, gevind word dat reeds bygevoegde pakkette bates met dieselfde GUID bevat, sal bates met ooreenstemmende GUID's van die ingevoerde pakket nie by die projek gevoeg word nie.
  2. Pakket is 'n projek. As, wanneer 'n pakket ingevoer word, gevind word dat die projek bates het met ooreenstemmende GUID's, sal die bates van die pakket nie by die projek gevoeg word nie. Die bates wat van hulle afhanklik is, sal egter die bates van die projek begin gebruik.

Oordrag van bates van 'n projek na 'n pakket

As jy 'n bate van 'n projek na 'n pakket oordra terwyl Unity oop is, sal die funksionaliteit daarvan behoue ​​bly, en skakels in afhanklike bates sal die bate van die pakket begin gebruik.

Dit is belangrik om: Wanneer 'n bate van 'n projek na 'n pakket gekopieer word, sal die pakket-projek-konflik wat in die afdeling hierbo beskryf word, voorkom.

Moontlike oplossings vir konflikte

  1. Hertoewysing van GUID's volgens eie algoritmes wanneer alle bates ingevoer word om botsings te vermy.
  2. Voeg alle bates by een projek met hul daaropvolgende skeiding in pakkette.
  3. Skep 'n databasis wat die GUID's van alle bates bevat en bekragtig wanneer pakkette ingedien word.

Gevolgtrekking

UPM is 'n nuwe oplossing vir die verspreiding van gedeelde hulpbronne in Unity wat 'n waardige alternatief vir bestaande metodes kan wees. Die aanbevelings wat in die artikel beskryf word, het ontstaan ​​op grond van werklike gevalle. Ons hoop jy vind hulle nuttig.

Bron: will.com

Voeg 'n opmerking