Eenheet Package Manager

Unity ass eng Plattform déi scho laang existéiert a sech dauernd entwéckelt. Wéi och ëmmer, wann Dir gläichzäiteg mat verschiddene Projete schafft, kënnt Dir nach ëmmer Schwieregkeeten begéinen beim Gebrauch vu gemeinsame Quellen (.cs), Bibliothéiken (.dll) an aner Verméigen (Biller, Kläng, Modeller, Prefab). An dësem Artikel schwätze mir iwwer eis Erfahrung mat enger gebierteg Léisung fir esou e Problem fir Unity.

Eenheet Package Manager

Gemeinsam Ressource Verdeelung Methoden

Et gëtt méi wéi ee Wee fir gemeinsame Ressourcen fir verschidde Projeten ze benotzen, awer all Approche huet seng Virdeeler an Nodeeler.

1. Duplikatioun - mir duplizéieren Ressourcen tëscht Projeten "vun Hand."

Pros:

  • Gëeegent fir all Zorte vu Ressourcen.
  • Keng Ofhängegkeet Problemer.
  • Et gi keng Probleemer mat Asset GUIDs.

Muecht:

  • Rise Repositories.
  • Et gëtt keng Méiglechkeet vun Versioun.
  • Schwieregkeete verfollegen Ännerungen op gemeinsame Ressourcen.
  • Schwieregkeeten gedeelt Ressourcen ze aktualiséieren.

2. Git submodules - Verdeelung vu gemeinsame Ressourcen duerch extern Ënnermoduler.

Pros:

  • Dir kënnt mat de Quellen schaffen.
  • Dir kënnt Verméigen verdeelen.
  • Keng Ofhängegkeet Problemer.

Muecht:

  • Git Erfahrung erfuerderlech.
  • Git ass net ganz frëndlech mat binäre Dateien - Dir musst LFS verbannen.
  • Zougang Kontroll fir Repositories.
  • Schwieregkeeten mat Upgrade an Downgrading Versiounen.
  • GUID Kollisiounen si méiglech an et gëtt kee kloert Verhalen vum Unity Deel fir se ze léisen.

3. NuGet - Verdeelung vu gemeinsame Bibliothéiken duerch NuGet Packagen.

Pros:

  • Praktesch Aarbecht mat Projeten déi net vun Unity ofhänken.
  • Confortabel Versioun an Ofhängegkeet Resolutioun.

Muecht:

  • Unity kann net mat NuGet Packagen aus der Këscht schaffen (op GitHub kënnt Dir NuGet Package Manager fir Unity fannen, wat dëst fixéiert, awer et ginn e puer Nuancen).
  • Schwieregkeeten fir aner Aarte vu Verméigen ze verdeelen.

4. Unity Package Manager - Verdeelung vu gemeinsame Ressourcen duerch eng gebierteg Léisung fir Unity.

Pros:

  • Native Interface fir mat Packagen ze schaffen.
  • Schutz géint iwwerschreiwe .meta Dateien a Packagen wéinst GUID Konflikter.
  • Méiglechkeet vun Versioun.
  • Fäegkeet all Zorte vu Ressourcen fir Unity ze verdeelen.

Muecht:

  • GUID Konflikter kënnen nach optrieden.
  • Et gëtt keng Dokumentatioun fir Ëmsetzung.

Déi lescht Method huet méi Virdeeler wéi Nodeeler. Wéi och ëmmer, et ass elo net ganz populär wéinst dem Mangel u Dokumentatioun, an dofir wäerte mir et am Detail ophalen.

Eenheet Package Manager

Unity Package Manager (UPM) ass e Package Management Tool. Et gouf an Unity 2018.1 bäigefüügt a gouf nëmme fir Packagen benotzt déi vun Unity Technologies entwéckelt goufen. Wéi och ëmmer, mat der Versioun 2018.3 unzefänken, gouf et méiglech personaliséiert Packagen ze addéieren.

Eenheet Package Manager
Eenheet Package Manager Interface

D'Packagen kommen net an de Projetsquellen op (Assets directory). Si sinn an engem separaten Dossier %projectFolder%/Library/PackageCache a beaflosst de Projet net op iergendeng Manéier, hir eenzeg Ernimmung am Quellcode ass an der Datei packages/manifest.json.

Eenheet Package Manager
Packagen am Projet Dateisystem

Package Quellen

UPM ka verschidde Packagequellen benotzen:

1. Dateisystem.

Pros:

  • Geschwindegkeet vun der Ëmsetzung.
  • Erfuerdert keng Drëtt Partei Tools.

Muecht:

  • Schwieregkeeten an der Versioun.
  • Gemeinsam Zougang zum Dateiesystem ass erfuerderlech fir jiddereen deen mam Projet schafft.

2. Git Repository.

Pros:

  • Alles wat Dir braucht ass e Git Repository.

Muecht:

  • Dir kënnt net tëscht Versiounen duerch d'UPM Fënster wiesselen.
  • Schafft net mat all Git Repositories.

3. npm Repository.

Pros:

  • Voll ënnerstëtzt UPM Funktionalitéit a gëtt benotzt fir offiziell Unity Packagen ze verdeelen.

Muecht:

  • De Moment ignoréiert all String Versioune vu Packagen ausser "-Preview".

Drënner wäerte mir d'UPM + npm Ëmsetzung kucken. Dëse Bündel ass bequem well et Iech erlaabt mat all Zort Ressource ze schaffen a Package Versiounen ze managen, an och déi gebierteg UPM Interface voll ënnerstëtzt.

Dir kënnt et als npm Repository benotzen Verdaccio. Et gëtt eng detailléiert Dokumentatioun, a just e puer Kommandoen sinn erfuerderlech fir se auszeféieren.

Ëmfeld Opstellung

Als éischt musst Dir installéieren node.js.

E Package erstellen

Fir e Package ze kreéieren, musst Dir d'Datei placéieren package.json, déi et beschreiwen, an de Verzeechnes mat dem Inhalt vun dësem Package. Dir musst déi folgend maachen:

Gitt an de Projetsverzeechnes dee mir e Package maache wëllen.

Run den npm init Kommando a gitt déi erfuerderlech Wäerter wärend dem Dialog. Fir Numm, uginn den Numm am ëmgedréint Domain Format, zum Beispill com.plarium.somepackage.
Fir de Package Numm bequem ze weisen, füügt d'DisplayName Propriétéit un package.json a fëllt se.

Zënter npm ass js-orientéiert, enthält d'Datei d'Haapt- a Skripteigenschaften déi mir net brauchen, déi Unity net benotzt. Et ass besser se ze läschen fir d'Packagebeschreiwung net ze räissen. De Fichier soll esou ausgesinn:

  1. Gitt an de Projetsverzeechnes dee mir e Package maache wëllen.
  2. Run den npm init Kommando a gitt déi erfuerderlech Wäerter wärend dem Dialog. Fir Numm, uginn den Numm am ëmgedréint Domain Format, zum Beispill com.plarium.somepackage.
  3. Fir de Package Numm bequem ze weisen, füügt d'DisplayName Propriétéit un package.json a fëllt se.
  4. Zënter npm ass js-orientéiert, enthält d'Datei d'Haapt- a Skripteigenschaften déi mir net brauchen, déi Unity net benotzt. Et ass besser se ze läschen fir d'Packagebeschreiwung net ze räissen. De Fichier soll esou ausgesinn:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Öffnen d'Unitéit a generéiert eng .meta-Datei fir package.json (Unity gesäit keng Verméigen ouni .meta-Dateien, Packagen fir Unity ginn nëmme liesen opgemaach).

E Pak schécken

Fir de Package ze schécken, musst Dir de Kommando ausféieren: npm publish --registry *адрес до хранилища пакетов*.

Installatioun an Aktualiséierung vu Packagen iwwer Unity Package Manager

Fir e Package zu engem Unity-Projet derbäizefügen, braucht Dir:

  1. Add to file manifest.json Informatioun iwwer d'Quell vun de Packagen. Fir dëst ze maachen, musst Dir d'Propriétéit addéieren scopedRegistries a gitt d'Scopes an d'Quelladress un, wou spezifesch Scopes gesicht ginn.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Gitt op Unity an öffnet d'Package Manager-Fënster (mat personaliséierte Packagen ze schaffen ass net anescht wéi mat agebautenen ze schaffen).
  3. Wielt All Packagen.
  4. Fannt de Package deen Dir braucht a füügt et derbäi.

Eenheet Package Manager

Schafft mat Quellen an Debugging

Fir datt d'Quellen mam Projet verbonne sinn, musst Dir erstellen Assemblée Definitioun fir de Pak.

D'Benotzung vu Packagen limitéiert Är Debuggingoptiounen net. Wéi och ëmmer, wann Dir mat Packagen an Unity schafft, kënnt Dir net op d'IDE goen andeems Dir op e Feeler an der Konsole klickt wann de Feeler am Package geschitt ass. Dëst ass wéinst der Tatsaach datt Unity keng Scripte als separat Dateien gesäit, well wann Dir d'Assemblée Definitioun benotzt, gi se an eng Bibliothéik gesammelt an am Projet abegraff. Wann Dir mat Quellen aus engem Projet schafft, klickt op d'IDE ass verfügbar.

Skript an engem Projet mat engem verbonne Package:

Eenheet Package Manager
Skript aus dem Package mat engem funktionnéierende Breakpoint:

Eenheet Package Manager

Dréngend Fixe fir Packagen

Unity Packagen, déi zu engem Projet bäigefüügt ginn, sinn nëmme liesen, awer kënnen am Package Cache geännert ginn. Fir dëst ze maachen braucht Dir:

  1. Gitt op Package am Package Cache.

    Eenheet Package Manager

  2. Maacht déi néideg Ännerungen.
  3. Update Versioun am Fichier package.json.
  4. Package schécken npm publish --registry *адрес до хранилища пакетов*.
  5. Update de Package Versioun op déi korrigéiert iwwer d'UPM Interface.

Package Import Konflikter

Déi folgend GUID Konflikter kënnen optrieden wann Dir Packagen importéiert:

  1. Package - Package. Wann, wann Dir e Package importéiert, entdeckt gëtt datt scho addéierte Packagen Verméigen mat deemselwechte GUID enthalen, ginn Verméigen mat passenden GUIDs aus dem importéierte Package net an de Projet bäigefüügt.
  2. E Package ass e Projet. Wann, wann Dir e Package importéiert, entdeckt gëtt datt de Projet Verméigen mat passenden GUIDs enthält, da ginn d'Verméigen aus dem Package net an de Projet bäigefüügt. Wéi och ëmmer, Verméigen, déi dovun ofhänken, fänken un Verméigen aus dem Projet ze benotzen.

Verméigen vun engem Projet op e Package transferéieren

Wann Dir e Verméigen vun engem Projet op e Package transferéiert wärend Unity op ass, gëtt seng Funktionalitéit bewahrt, a Linken an ofhängege Verméigen fänken un de Verméigen aus dem Package ze benotzen.

wichteg: Wann Dir e Verméigen aus engem Projet op e Package kopéiert, da kënnt de "Package - Project" Konflikt, deen an der Rubrik hei uewen beschriwwe gëtt.

Méiglech Léisunge fir Konflikter

  1. Reassigning GUIDs mat eisen eegene Algorithmen wann Dir all Verméigen importéiert fir Kollisiounen ze eliminéieren.
  2. Füügt all Verméigen zu engem Projet an deelt se dann a Packagen op.
  3. Eng Datebank erstellen déi d'GUIDs vun all Verméigen enthält an d'Validatioun ausféieren wann Dir Packagen schéckt.

Konklusioun

UPM ass eng nei Léisung fir gedeelt Ressourcen an Unity ze verdeelen, wat eng wäertvoll Alternativ zu existente Methode ka sinn. D'Empfehlungen, déi am Artikel beschriwwe ginn, baséieren op echte Fäll. Mir hoffen Dir fannt se nëtzlech.

Source: will.com

Setzt e Commentaire