Manajer Paket Unity

Unity mangrupikeun platform anu parantos lami lami sareng terus mekar. Nanging, nalika damel di dinya sareng sababaraha proyék dina waktos anu sami, anjeun masih tiasa ngalaman kasusah dina ngagunakeun sumber umum (.cs), perpustakaan (.dll) sareng aset sanésna (gambar, sora, modél, prefab). Dina tulisan ieu urang bakal ngobrol ngeunaan pangalaman urang sareng solusi asli pikeun masalah sapertos Unity.

Manajer Paket Unity

Métode Distribusi Sumberdaya Dibagi

Aya leuwih ti hiji cara ngagunakeun sumberdaya dibagikeun keur proyék béda, tapi unggal pendekatan boga pro jeung kontra.

1. Duplikasi - urang duplikat sumberdaya antara proyék "ku leungeun".

pro:

  • Cocog jeung sagala jinis sumberdaya.
  • Taya masalah kagumantungan.
  • Henteu aya masalah sareng GUID aset.

kontra:

  • Repositories raksasa.
  • Teu aya kamungkinan versi.
  • Kasesahan nyukcruk parobahan sumberdaya dibagikeun.
  • Kasesahan ngamutahirkeun sumberdaya dibagikeun.

2. submodul Git - distribusi sumberdaya dibagikeun ngaliwatan submodules éksternal.

pro:

  • Anjeun tiasa damel sareng sumberna.
  • Anjeun tiasa ngadistribusikaeun aset.
  • Taya masalah kagumantungan.

kontra:

  • pangalaman Git diperlukeun.
  • Git henteu ramah pisan sareng file binér - anjeun kedah nyambungkeun LFS.
  • Kontrol aksés pikeun repositories.
  • Kasesahan sareng ningkatkeun sareng nurunkeun versi.
  • Tabrakan GUID mungkin sareng teu aya paripolah anu jelas dina Unity pikeun ngabéréskeunana.

3. NuGet - distribusi perpustakaan dibagikeun ngaliwatan pakét NuGet.

pro:

  • Karya anu gampang sareng proyék anu henteu gumantung kana Unity.
  • Vérsi merenah tur resolusi kagumantungan.

kontra:

  • Unity teu tiasa dianggo sareng bungkusan NuGet out of the box (dina GitHub anjeun tiasa mendakan Manajer Paket NuGet pikeun Unity, anu ngalereskeun ieu, tapi aya sababaraha nuansa).
  • Kasesahan dina ngadistribusikaeun tipe séjén aset.

4. Unity Package Manager - distribusi sumberdaya anu dibagikeun ngaliwatan solusi asli pikeun Unity.

pro:

  • Antarbeungeut asli pikeun damel sareng bungkusan.
  • Perlindungan ngalawan overwriting file .meta dina bungkusan alatan konflik GUID.
  • Kamungkinan versioning.
  • Kamampuhan pikeun ngadistribusikaeun sagala jinis sumberdaya pikeun Unity.

kontra:

  • Konflik GUID masih bisa lumangsung.
  • Henteu aya dokuméntasi pikeun palaksanaan.

Metodeu anu terakhir ngagaduhan langkung kaunggulan tibatan kalemahan. Nanging, éta henteu populer pisan ayeuna kusabab kurangna dokuméntasi, sareng ku kituna urang bakal ngabahas sacara rinci.

Manajer Paket Unity

Unity Package Manager (UPM) mangrupikeun alat manajemén pakét. Tambihkeun dina Unity 2018.1 sareng ngan ukur dianggo pikeun bungkusan anu dikembangkeun ku Unity Technologies. Nanging, dimimitian ku vérsi 2018.3, janten kamungkinan pikeun nambihan bungkusan khusus.

Manajer Paket Unity
Unity Paket Manajer Interface

Bungkusan henteu mungkas dina sumber proyék (Diréktori Aset). Aranjeunna dina diréktori misah %projectFolder%/Library/PackageCache sarta teu mangaruhan proyék sagala cara, ngan nyebut maranéhanana dina kode sumber aya dina file packages/manifest.json.

Manajer Paket Unity
Paket dina sistem file proyék

Sumber pakét

UPM tiasa nganggo sababaraha sumber pakét:

1. Sistem file.

pro:

  • Laju palaksanaan.
  • Teu merlukeun parabot pihak katilu.

kontra:

  • Kasesahan dina versioning.
  • Aksés anu dibagi kana sistem file diperyogikeun pikeun sadayana anu damel sareng proyék éta.

2. Repository Git.

pro:

  • Sadaya anu anjeun peryogikeun nyaéta gudang Git.

kontra:

  • Anjeun teu bisa pindah antara versi ngaliwatan jandela UPM.
  • Henteu dianggo sareng sadaya repositori Git.

3. gudang npm.

pro:

  • Sapinuhna ngadukung fungsionalitas UPM sareng dianggo pikeun nyebarkeun bungkusan Unity resmi.

kontra:

  • Ayeuna teu malire sadaya versi string bungkusan iwal "-preview".

Di handap ieu urang bakal ningali palaksanaan UPM + npm. Bungkusan ieu cocog sabab ngamungkinkeun anjeun damel sareng jinis sumber daya sareng ngatur versi pakét, sareng ogé ngadukung antarmuka UPM asli.

Anjeun tiasa nganggo éta salaku gudang npm Verdaccio. Aya rinci dokuméntasi, sareng ngan ukur sababaraha paréntah anu diperyogikeun pikeun ngajalankeun éta.

Nyetél lingkungan

Mimiti anjeun kedah masang simpul.js.

Nyiptakeun pakét

Pikeun nyieun pakét, anjeun kedah nempatkeun file package.json, anu bakal ngajelaskeun éta, kana diréktori sareng eusi pakét ieu. Anjeun kedah ngalakukeun ieu:

Pindah ka diréktori proyék anu urang badé ngadamel pakét.

Jalankeun paréntah npm init sareng lebetkeun nilai anu diperyogikeun salami dialog. Pikeun ngaran, tangtukeun ngaran dina format domain sabalikna, contona com.plarium.somepackage.
Pikeun merenah mintonkeun ngaran pakét, tambahkeun sipat displayName pikeun package.json sarta eusian eta.

Kusabab npm berorientasi js, file ngandung sipat utama sareng skrip anu urang henteu peryogikeun, anu henteu dianggo ku Unity. Hadé pisan mun éta nyabut aranjeunna ku kituna teu clutter pedaran pakét. Berkasna kedah siga kieu:

  1. Pindah ka diréktori proyék anu urang badé ngadamel pakét.
  2. Jalankeun paréntah npm init sareng lebetkeun nilai anu diperyogikeun salami dialog. Pikeun ngaran, tangtukeun ngaran dina format domain sabalikna, contona com.plarium.somepackage.
  3. Pikeun merenah mintonkeun ngaran pakét, tambahkeun sipat displayName pikeun package.json sarta eusian eta.
  4. Kusabab npm berorientasi js, file ngandung sipat utama sareng skrip anu urang henteu peryogikeun, anu henteu dianggo ku Unity. Hadé pisan mun éta nyabut aranjeunna ku kituna teu clutter pedaran pakét. Berkasna kedah siga kieu:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Buka Unity sarta ngahasilkeun file .meta pikeun package.json (Unity henteu ningali aset tanpa file .meta, bungkusan pikeun Unity dibuka baca-hijina).

Ngirim pakét

Pikeun ngirim pakét anjeun kedah ngajalankeun paréntah: npm publish --registry *адрес до хранилища пакетов*.

Masang sareng ngapdet bungkusan via Unity Package Manager

Pikeun nambihan pakét kana proyék Unity, anjeun peryogi:

  1. Tambahkeun ka file manifest.json inpormasi ngeunaan sumber bungkusan. Jang ngalampahkeun ieu anjeun kudu nambahkeun harta scopedRegistries sareng nunjukkeun ruang lingkup sareng alamat sumber dimana lingkup khusus bakal dipilarian.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Pindah ka Unity sareng buka jandela Manajer Paket (ngagawekeun bungkusan khusus henteu béda sareng damel sareng anu diwangun).
  3. Pilih Sadaya Paket.
  4. Manggihan pakét nu peryogi tur nambahkeun eta.

Manajer Paket Unity

Gawe sareng sumber sareng debugging

Supados sumber disambungkeun kana proyék, Anjeun kudu nyieun Harti Majelis pikeun pakét.

Ngagunakeun bungkusan teu ngawatesan pilihan debugging Anjeun. Nanging, nalika damel sareng bungkusan di Unity, anjeun moal tiasa angkat ka IDE ku ngaklik kasalahan dina konsol upami aya kasalahan dina bungkusan. Ieu disababkeun ku kanyataan yén Unity henteu ningali naskah salaku file anu misah, sabab nalika ngagunakeun Définisi Majelis aranjeunna dikumpulkeun kana perpustakaan sareng kalebet dina proyék. Nalika damel sareng sumber tina proyék, ngaklik kana IDE sayogi.

Skrip dina proyék sareng pakét disambungkeun:

Manajer Paket Unity
Skrip tina pakét kalayan titik putus kerja:

Manajer Paket Unity

Perbaikan urgent kana bungkusan

Bungkusan Unity anu ditambahkeun kana proyék ngan ukur dibaca, tapi tiasa diédit dina cache pakét. Jang ngalampahkeun ieu anjeun peryogi:

  1. Pindah ka pakét dina cache pakét.

    Manajer Paket Unity

  2. Jieun perobahan nu diperlukeun.
  3. Apdet versi dina file package.json.
  4. Kirim pakét npm publish --registry *адрес до хранилища пакетов*.
  5. Apdet versi pakét ka anu dilereskeun liwat antarmuka UPM.

pakét impor bentrok

Konflik GUID di handap ieu tiasa lumangsung nalika ngimpor bungkusan:

  1. Bungkusan - pakét. Upami, nalika ngimpor pakét, mendakan yén pakét anu parantos ditambah ngandung aset sareng GUID anu sami, aset sareng GUID anu cocog tina pakét anu diimpor moal ditambah kana proyék.
  2. Paket mangrupikeun proyek. Upami, nalika ngimpor pakét, mendakan yén proyék éta ngandung aset sareng GUID anu cocog, maka aset tina pakét éta moal ditambah kana proyék éta. Nanging, aset anu gumantung kana aranjeunna bakal ngamimitian nganggo aset tina proyék éta.

Mindahkeun aset tina proyék ka pakét

Upami anjeun nransferkeun aset tina proyék ka pakét nalika Unity dibuka, fungsionalitasna bakal dilestarikan, sareng tautan dina aset anu gumantung bakal mimiti nganggo aset tina bungkusan.

penting: Nalika nyalin aset tina proyék kana pakét, konflik "Pakét - Proyék" anu dijelaskeun dina bagian di luhur bakal lumangsung.

Solusi anu mungkin pikeun konflik

  1. Reassigning GUIDs ngagunakeun algoritma urang sorangan nalika ngimpor sakabéh aset pikeun ngaleungitkeun tabrakan.
  2. Nambahkeun sadaya aset kana hiji proyék teras ngabagi kana bungkusan.
  3. Nyiptakeun pangkalan data anu ngandung GUID sadaya aset sareng ngalaksanakeun validasi nalika ngirim bungkusan.

kacindekan

UPM mangrupikeun solusi énggal pikeun nyebarkeun sumber daya anu dibagikeun dina Unity, anu tiasa janten alternatif anu pantes pikeun metode anu aya. Rekomendasi anu dijelaskeun dina tulisan dumasar kana kasus nyata. Simkuring miharep anjeun manggihan aranjeunna mangpaat.

sumber: www.habr.com

Tambahkeun komentar