Unity Package Manager

Ang panaghiusa usa ka plataporma nga dugay na nga naglungtad ug kanunay nga nag-uswag. Bisan pa, kung nagtrabaho niini uban ang daghang mga proyekto sa parehas nga oras, mahimo ka gihapon makasugat og mga kalisud sa paggamit sa mga sagad nga gigikanan (.cs), librarya (.dll) ug uban pang mga kabtangan (mga imahe, tunog, modelo, prefab). Niini nga artikulo maghisgot kami bahin sa among kasinatian sa usa ka lumad nga solusyon sa ingon nga problema alang sa Unity.

Unity Package Manager

Mga Pamaagi sa Pag-apod-apod sa Kapanguhaan

Adunay labaw pa sa usa ka paagi sa paggamit sa gipaambit nga mga kapanguhaan alang sa lainlaing mga proyekto, apan ang matag pamaagi adunay mga bentaha ug disbentaha.

1. Pagdoble - "pinaagi sa kamot" atong doblehon ang mga kapanguhaan tali sa mga proyekto.

Mga Pro:

  • Angayan sa tanang matang sa mga kahinguhaan.
  • Walay mga isyu sa pagsalig.
  • Walay problema sa asset GUIDs.

Kahinumduman:

  • Mga higanteng repositoryo.
  • Walay kapilian alang sa bersyon.
  • Ang kalisud sa pagsubay sa mga pagbag-o sa gipaambit nga mga kapanguhaan.
  • Kalisud sa pag-update sa gipaambit nga mga kapanguhaan.

2. Git submodules - pag-apod-apod sa gipaambit nga mga kahinguhaan pinaagi sa mga eksternal nga submodules.

Mga Pro:

  • Makatrabaho ka sa mga tinubdan.
  • Mahimo nimong ipang-apod-apod ang mga kabtangan.
  • Walay mga isyu sa pagsalig.

Kahinumduman:

  • Git kahanas gikinahanglan.
  • Ang Git dili kaayo mahigalaon sa binary nga mga file - kinahanglan nimo nga ilakip ang LFS.
  • Pagkontrol sa pag-access alang sa mga repositoryo.
  • Kalisud sa pag-upgrade ug pag-downgrade.
  • Posible ang mga bangga sa GUID ug wala’y klaro nga pamatasan sa bahin sa Unity aron masulbad kini.

3. NuGet - pag-apod-apod sa gipaambit nga mga librarya pinaagi sa mga pakete sa NuGet.

Mga Pro:

  • Sayon nga pagtrabaho sa mga proyekto nga wala magdepende sa Unity.
  • Sayon nga bersyon ug resolusyon sa dependency.

Kahinumduman:

  • Ang panaghiusa wala mahibal-an kung unsaon pagtrabaho ang mga pakete sa NuGet sa gawas sa kahon (mahimo nimong makit-an ang NuGet Package Manager alang sa Unity sa GitHub, nga nag-ayo niini, apan adunay mga nuances).
  • Mga kalisud sa pag-apod-apod sa ubang mga matang sa mga kabtangan.

4. Unity Package Manager - pag-apod-apod sa gipaambit nga mga kapanguhaan pinaagi sa usa ka lumad nga solusyon alang sa Unity.

Mga Pro:

  • Lumad nga interface alang sa pagtrabaho sa mga pakete.
  • Proteksyon batok sa overwriting .meta files sa packages sa kaso sa GUID conflicts.
  • Bersyon nga kapabilidad.
  • Abilidad sa pag-apod-apod sa tanang matang sa mga kahinguhaan alang sa Unity.

Kahinumduman:

  • Ang mga panagsumpaki sa GUID mahimo gihapon nga mahitabo.
  • Walay dokumentasyon alang sa pagpatuman.

Ang ulahi nga pamaagi adunay daghang mga bentaha kaysa mga disbentaha. Bisan pa, kini dili kaayo popular karon tungod sa kakulang sa dokumentasyon, ug busa atong hisgotan kini sa detalye.

Unity Package Manager

Ang Unity Package Manager (gitawag nga UPM) usa ka himan sa pagdumala sa pakete. Gidugang kini sa Unity 2018.1 ug gigamit lamang alang sa mga pakete nga gihimo sa Unity Technologies. Bisan pa, sugod sa bersyon 2018.3, nahimo’g posible ang pagdugang mga kostumbre nga pakete.

Unity Package Manager
Interface sa Manager sa Unity Package

Ang mga pakete dili matapos sa mga gigikanan sa proyekto (direktoryo sa mga kabtangan). Anaa sila sa bulag nga direktoryo. %projectFolder%/Library/PackageCache ug dili makaapekto sa proyekto sa bisan unsang paagi, ang ilang paghisgot lamang sa source code anaa sa file packages/manifest.json.

Unity Package Manager
Mga pakete sa sistema sa file sa proyekto

Mga tinubdan sa package

Ang UPM mahimong mogamit sa daghang mga gigikanan sa pakete:

1. Sistema sa file.

Mga Pro:

  • Katulin sa pagpatuman.
  • Wala magkinahanglan mga himan sa ikatulo nga partido.

Kahinumduman:

  • pagkakomplikado sa bersyon.
  • Ang gipaambit nga pag-access sa file system gikinahanglan alang sa tanan nga nagtrabaho sa proyekto.

2. Git repository.

Mga Pro:

  • Ang tanan nga imong gikinahanglan mao ang usa ka Git repository.

Kahinumduman:

  • Dili ka makabalhin tali sa mga bersyon pinaagi sa bintana sa UPM.
  • Dili molihok sa tanan nga mga repositoryo sa Git.

3. npm repository.

Mga Pro:

  • Hingpit nga nagsuporta sa pagpaandar sa UPM ug gigamit sa pag-apod-apod sa opisyal nga mga pakete sa Unity.

Kahinumduman:

  • Sa pagkakaron gibalewala ang tanang bersyon sa string sa mga pakete gawas sa "-preview".

Atong tan-awon ang UPM + npm nga pagpatuman sa ubos. Kini nga bundle sayon ​​tungod kay kini nagtugot kanimo sa pagtrabaho uban sa bisan unsa nga matang sa mga kapanguhaan ug pagdumala sa mga bersyon sa package, ug usab hingpit nga nagsuporta sa lumad nga UPM interface.

Ingon usa ka repository sa npm, mahimo nimong gamiton Verdaccio. Kini adunay usa ka detalyado dokumentasyon, ug kini nagkinahanglan sa literal nga usa ka magtiayon nga mga sugo sa pagpadagan niini.

Pag-setup sa palibot

Una kinahanglan nimo nga i-install node.js.

Paghimo og package

Aron makahimo usa ka pakete, kinahanglan nimo nga ibutang ang file package.json, nga maghulagway niini, ngadto sa direktoryo nga adunay sulod niini nga pakete. Kinahanglan nimong buhaton ang mosunod:

Lakaw ngadto sa direktoryo sa proyekto nga gusto namong himoong package.

Pagdalagan ang npm init nga sugo ug isulod ang gikinahanglan nga mga bili atol sa dialogo. Para sa ngalan, ipiho ang ngalan sa reverse domain format, pananglitan, com.plarium.somepackage.
Para sa sayon ​​nga pagpakita sa ngalan sa package, idugang ang displayName property sa package.json ug isulat kini.

Tungod kay ang npm kay js-oriented, ang file naglangkob sa mga nag-una ug mga script nga mga kabtangan nga wala namo kinahanglana, nga wala gigamit sa Unity. Mas maayo nga tangtangon sila aron dili mabara ang paghulagway sa pakete. Ang file kinahanglan tan-awon sama niini:

  1. Lakaw ngadto sa direktoryo sa proyekto nga gusto namong himoong package.
  2. Pagdalagan ang npm init nga sugo ug isulod ang gikinahanglan nga mga bili atol sa dialogo. Para sa ngalan, ipiho ang ngalan sa reverse domain format, pananglitan, com.plarium.somepackage.
  3. Para sa sayon ​​nga pagpakita sa ngalan sa package, idugang ang displayName property sa package.json ug isulat kini.
  4. Tungod kay ang npm kay js-oriented, ang file naglangkob sa mga nag-una ug mga script nga mga kabtangan nga wala namo kinahanglana, nga wala gigamit sa Unity. Mas maayo nga tangtangon sila aron dili mabara ang paghulagway sa pakete. Ang file kinahanglan tan-awon sama niini:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Ablihi ang Unity ug paghimo ug .meta file para sa package.json (Ang Unity dili makakita sa mga asset nga walay .meta files, Unity packages bukas read-only).

Nagpadala ug package

Aron magpadala usa ka pakete, kinahanglan nimo nga ipadagan ang mando: npm publish --registry *адрСс Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²*.

Pag-instalar ug pag-update sa mga pakete pinaagi sa Unity Package Manager

Aron makadugang usa ka pakete sa usa ka proyekto sa Unity, kinahanglan nimo:

  1. Pagsulat sa file manifest.json impormasyon bahin sa tinubdan sa mga pakete. Aron mahimo kini, kinahanglan ka magdugang usa ka kabtangan scopedRegistries ug ipakita ang mga sakup ug ang adres sa gigikanan diin ang piho nga mga sakup pangitaon.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрСс Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Lakaw ngadto sa Unity ug ablihi ang Package Manager window (ang pagtrabaho uban sa custom packages walay kalainan sa pagtrabaho uban sa mga built-in).
  3. Pilia ang Tanan nga Mga Pakete.
  4. Pangitaa ang gikinahanglan nga pakete ug idugang kini.

Unity Package Manager

Pagtrabaho sa mga gigikanan ug pag-debug

Aron ang mga tinubdan makonektar sa proyekto, kinahanglan ka nga maghimo Kahulugan sa Asembliya para sa package.

Ang paggamit sa mga pakete wala maglimite sa kasangkaran sa pag-debug. Bisan pa, kung nagtrabaho kauban ang mga pakete sa Unity, dili ka makaadto sa IDE pinaagi sa pag-klik sa usa ka sayup sa console kung ang sayup nahitabo sa package. Kini tungod kay ang Unity wala makakita sa mga script isip bulag nga mga file, tungod kay kung gamiton ang Assembly Definition, kini gikolekta sa usa ka librarya ug gilakip sa proyekto. Kung nagtrabaho kauban ang mga gigikanan gikan sa usa ka proyekto, adunay usa ka click-through nga pagbalhin sa IDE.

Script sa usa ka proyekto nga adunay konektado nga pakete:

Unity Package Manager
Script gikan sa package nga adunay working breakpoint:

Unity Package Manager

Dinalian nga pag-ayo sa mga pakete

Ang mga pakete sa panaghiusa nga gidugang sa proyekto kay read-only, apan mahimong i-edit sa package cache. Alang niini kinahanglan nimo:

  1. Lakaw ngadto sa package sa package cache.

    Unity Package Manager

  2. Paghimo sa gikinahanglan nga mga kausaban.
  3. I-update ang bersyon sa file package.json.
  4. ipadala package npm publish --registry *адрСс Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²*.
  5. I-update ang bersyon sa pakete ngadto sa gitul-id nga bersyon pinaagi sa interface sa UPM.

Mga panagsumpaki sa import sa package

Kung nag-import og mga pakete, ang mosunod nga mga panagsumpaki sa GUID mahimong mahitabo:

  1. Pakete - pakete. Kung, kung mag-import ug usa ka package, makita nga ang nadugang nga mga pakete adunay mga kabtangan nga adunay parehas nga GUID, ang mga kabtangan nga adunay parehas nga GUID gikan sa gi-import nga pakete dili idugang sa proyekto.
  2. Ang package usa ka proyekto. Kung, sa pag-import sa usa ka pakete, makita nga ang proyekto adunay mga kabtangan nga adunay katugbang nga mga GUID, nan ang mga kabtangan gikan sa pakete dili idugang sa proyekto. Bisan pa, ang mga kabtangan nga nagdepende kanila magsugod sa paggamit sa mga kabtangan gikan sa proyekto.

Pagbalhin sa mga kabtangan gikan sa usa ka proyekto ngadto sa usa ka pakete

Kung imong ibalhin ang usa ka asset gikan sa usa ka proyekto ngadto sa usa ka package samtang ang Unity bukas, nan ang pagpaandar niini mapreserbar, ug ang mga link sa nagsalig nga mga kabtangan magsugod sa paggamit sa asset gikan sa package.

importante: Kung nagkopya sa usa ka asset gikan sa usa ka proyekto ngadto sa usa ka pakete, ang panagsumpaki sa package-proyekto nga gihulagway sa seksyon sa ibabaw mahitabo.

Posible nga mga solusyon sa mga panagbangi

  1. Pag-reassign sa mga GUID sumala sa kaugalingon nga mga algorithm kung gi-import ang tanan nga mga kabtangan aron malikayan ang pagbangga.
  2. Pagdugang sa tanan nga mga kabtangan sa usa ka proyekto sa ilang sunod nga pagbulag sa mga pakete.
  3. Paghimo usa ka database nga adunay sulud nga mga GUID sa tanan nga mga kabtangan ug balido kung magsumite mga pakete.

konklusyon

Ang UPM usa ka bag-ong solusyon sa pag-apod-apod sa gipaambit nga mga kahinguhaan sa Unity nga mahimong usa ka takus nga alternatibo sa naa na nga mga pamaagi. Ang mga rekomendasyon nga gihulagway sa artikulo mitumaw base sa tinuod nga mga kaso. Kami nanghinaut nga makita nimo kini nga mapuslanon.

Source: www.habr.com

Idugang sa usa ka comment