Upravitelj paketa Unity

Unity je platforma koja postoji već neko vrijeme i stalno se razvija. Međutim, kada u njemu radite s nekoliko projekata u isto vrijeme, još uvijek možete naići na poteškoće u korištenju zajedničkih izvora (.cs), biblioteka (.dll) i drugih sredstava (slike, zvukovi, modeli, montažni elementi). U ovom ćemo članku govoriti o našem iskustvu s izvornim rješenjem takvog problema za Unity.

Upravitelj paketa Unity

Metode distribucije zajedničkih resursa

Postoji više od jednog načina korištenja zajedničkih resursa za različite projekte, ali svaki pristup ima svoje prednosti i nedostatke.

1. Umnožavanje - dupliciramo resurse između projekata "ručno".

Pros:

  • Prikladno za sve vrste resursa.
  • Nema problema s ovisnošću.
  • Nema problema s GUID-ovima sredstava.

Cons:

  • Divovska spremišta.
  • Ne postoji mogućnost verziranja.
  • Poteškoće s praćenjem promjena zajedničkih resursa.
  • Poteškoće s ažuriranjem zajedničkih resursa.

2. Git podmoduli — distribucija zajedničkih resursa kroz vanjske podmodule.

Pros:

  • Možete raditi s izvorima.
  • Možete distribuirati imovinu.
  • Nema problema s ovisnošću.

Cons:

  • Potrebno Git iskustvo.
  • Git nije baš prijateljski raspoložen prema binarnim datotekama - morat ćete spojiti LFS.
  • Kontrola pristupa za repozitorije.
  • Poteškoće s nadogradnjom i degradacijom verzija.
  • Moguće su kolizije GUID-a i ne postoji jasno ponašanje Unityja za njihovo rješavanje.

3. NuGet - distribucija dijeljenih knjižnica putem NuGet paketa.

Pros:

  • Zgodan rad s projektima koji ne ovise o Unityju.
  • Zgodno upravljanje verzijama i rješavanje ovisnosti.

Cons:

  • Unity ne može raditi s NuGet paketima odmah (na GitHubu možete pronaći NuGet Package Manager za Unity, koji to popravlja, ali postoje neke nijanse).
  • Poteškoće u raspodjeli drugih vrsta imovine.

4. Unity Package Manager - distribucija zajedničkih resursa kroz nativno rješenje za Unity.

Pros:

  • Izvorno sučelje za rad s paketima.
  • Zaštita od prepisivanja .meta datoteka u paketima zbog sukoba GUID-a.
  • Mogućnost verziranja.
  • Sposobnost distribucije svih vrsta resursa za Unity.

Cons:

  • I dalje može doći do sukoba GUID-a.
  • Ne postoji dokumentacija za realizaciju.

Posljednja metoda ima više prednosti nego nedostataka. Međutim, sada nije jako popularan zbog nedostatka dokumentacije, pa ćemo se detaljnije zadržati na njemu.

Upravitelj paketa Unity

Unity Package Manager (UPM) je alat za upravljanje paketima. Dodan je u Unity 2018.1 i korišten je samo za pakete koje je razvila Unity Technologies. Međutim, počevši od verzije 2018.3, postalo je moguće dodati prilagođene pakete.

Upravitelj paketa Unity
Unity Package Manager sučelje

Paketi ne završavaju u izvorima projekta (direktorij sredstava). Nalaze se u posebnom imeniku %projectFolder%/Library/PackageCache i ni na koji način ne utječu na projekt, njihovo jedino spominjanje u izvornom kodu je u datoteci packages/manifest.json.

Upravitelj paketa Unity
Paketi u datotečnom sustavu projekta

Izvori paketa

UPM može koristiti nekoliko izvora paketa:

1. Sustav datoteka.

Pros:

  • Brzina implementacije.
  • Ne zahtijeva alate treće strane.

Cons:

  • Poteškoće u verziji.
  • Zajednički pristup datotečnom sustavu potreban je za sve koji rade na projektu.

2. Git spremište.

Pros:

  • Sve što trebate je Git repozitorij.

Cons:

  • Ne možete se prebacivati ​​između verzija kroz UPM prozor.
  • Ne radi sa svim Git spremištima.

3. npm spremište.

Pros:

  • U potpunosti podržava UPM funkcionalnost i koristi se za distribuciju službenih Unity paketa.

Cons:

  • Trenutačno zanemaruje sve verzije nizova paketa osim "-preview".

U nastavku ćemo pogledati UPM + npm implementaciju. Ovaj je paket prikladan jer vam omogućuje rad s bilo kojom vrstom resursa i upravljanje verzijama paketa, a također u potpunosti podržava izvorno UPM sučelje.

Možete ga koristiti kao npm repozitorij Verdaccio. Postoji detaljan dokumentaciju, a za njegovo pokretanje potrebno je samo nekoliko naredbi.

Postavljanje okruženja

Prvo morate instalirati node.js.

Izrada paketa

Da biste kreirali paket, morate postaviti datoteku package.json, koji će ga opisati, u direktorij sa sadržajem ovog paketa. Morate učiniti sljedeće:

Idite u direktorij projekta za koji želimo napraviti paket.

Pokrenite naredbu npm init i unesite potrebne vrijednosti tijekom dijaloškog okvira. Za naziv navedite naziv u obrnutom formatu domene, na primjer com.plarium.somepackage.
Za prikladan prikaz naziva paketa dodajte svojstvo displayName u package.json i ispunite ga.

Budući da je npm orijentiran na js, datoteka sadrži main i scripts svojstva koja nam ne trebaju, a koja Unity ne koristi. Bolje ih je ukloniti kako ne bi zatrpali opis paketa. Datoteka bi trebala izgledati otprilike ovako:

  1. Idite u direktorij projekta za koji želimo napraviti paket.
  2. Pokrenite naredbu npm init i unesite potrebne vrijednosti tijekom dijaloškog okvira. Za naziv navedite naziv u obrnutom formatu domene, na primjer com.plarium.somepackage.
  3. Za prikladan prikaz naziva paketa dodajte svojstvo displayName u package.json i ispunite ga.
  4. Budući da je npm orijentiran na js, datoteka sadrži main i scripts svojstva koja nam ne trebaju, a koja Unity ne koristi. Bolje ih je ukloniti kako ne bi zatrpali opis paketa. Datoteka bi trebala izgledati otprilike ovako:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Otvorite Unity i generirajte .meta datoteku za package.json (Unity ne vidi imovinu bez .meta datoteka, paketi za Unity otvaraju se samo za čitanje).

Slanje paketa

Za slanje paketa potrebno je pokrenuti naredbu: npm publish --registry *адрес до хранилища пакетов*.

Instaliranje i ažuriranje paketa putem Unity Package Managera

Da biste dodali paket u Unity projekt, trebate:

  1. Dodaj u datoteku manifest.json informacije o izvoru paketa. Da biste to učinili, morate dodati svojstvo scopedRegistries i navedite opsege i izvornu adresu gdje će se pretraživati ​​određeni opsegi.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Idite na Unity i otvorite prozor Package Manager (rad s prilagođenim paketima ne razlikuje se od rada s ugrađenim).
  3. Odaberite Svi paketi.
  4. Pronađite paket koji vam je potreban i dodajte ga.

Upravitelj paketa Unity

Rad s izvorima i otklanjanje pogrešaka

Kako bi se izvori mogli povezati s projektom, potrebno je izraditi Definicija sklopa za paket.

Korištenje paketa ne ograničava vaše mogućnosti otklanjanja pogrešaka. Međutim, kada radite s paketima u Unityju, ne možete otići na IDE klikom na pogrešku u konzoli ako se pogreška dogodila u paketu. To je zbog činjenice da Unity ne vidi skripte kao zasebne datoteke, budući da se prilikom korištenja Definicije sklopa skupljaju u biblioteku i uključuju u projekt. Kada radite s izvorima iz projekta, dostupno je klikanje na IDE.

Skripta u projektu s povezanim paketom:

Upravitelj paketa Unity
Skripta iz paketa s radnom točkom prekida:

Upravitelj paketa Unity

Hitni popravci paketa

Unity paketi dodani projektu samo su za čitanje, ali se mogu uređivati ​​u predmemorij paketa. Da biste to učinili potrebno vam je:

  1. Idi na paket u predmemoriju paketa.

    Upravitelj paketa Unity

  2. Napravite potrebne promjene.
  3. Ažurirajte verziju u datoteci package.json.
  4. Pošalji paket npm publish --registry *адрес до хранилища пакетов*.
  5. Ažurirajte verziju paketa na ispravljenu putem UPM sučelja.

Sukobi pri uvozu paketa

Prilikom uvoza paketa mogu se pojaviti sljedeći sukobi GUID-a:

  1. Paket - paket. Ako se prilikom uvoza paketa otkrije da već dodani paketi sadrže sredstva s istim GUID-om, sredstva s odgovarajućim GUID-ovima iz uvezenog paketa neće biti dodana u projekt.
  2. Paket je projekt. Ako se prilikom uvoza paketa otkrije da projekt sadrži sredstva s odgovarajućim GUID-ovima, tada sredstva iz paketa neće biti dodana u projekt. Međutim, sredstva koja ovise o njima počet će koristiti sredstva iz projekta.

Prijenos sredstava iz projekta u paket

Ako prenesete sredstvo iz projekta u paket dok je Unity otvoren, njegova će se funkcionalnost očuvati, a veze u ovisnim sredstvima počet će koristiti sredstvo iz paketa.

To je važno: Prilikom kopiranja sredstva iz projekta u paket, dogodit će se sukob "Paket - Projekt" opisan u gornjem odjeljku.

Moguća rješenja sukoba

  1. Ponovno dodjeljivanje GUID-ova korištenjem naših vlastitih algoritama prilikom uvoza svih sredstava kako bi se uklonili kolizije.
  2. Dodavanje svih sredstava u jedan projekt, a zatim njihovo dijeljenje u pakete.
  3. Stvaranje baze podataka koja sadrži GUID-ove svih sredstava i provođenje provjere valjanosti prilikom slanja paketa.

Zaključak

UPM je novo rješenje za distribuciju zajedničkih resursa u Unityju, koje može biti dostojna alternativa postojećim metodama. Preporuke opisane u članku temeljene su na stvarnim slučajevima. Nadamo se da će vam biti od koristi.

Izvor: www.habr.com

Dodajte komentar