Birlik Paket Meneceri

Birlik kifayət qədər uzun müddətdir mövcud olan və daim inkişaf edən platformadır. Bununla belə, eyni vaxtda bir neçə layihə ilə işləyərkən ümumi mənbələrdən (.cs), kitabxanalardan (.dll) və digər aktivlərdən (şəkillər, səslər, modellər, prefabriklər) istifadə etməkdə hələ də çətinliklərlə qarşılaşa bilərsiniz. Bu yazıda Birlik üçün belə bir problemin yerli həlli ilə bağlı təcrübəmizdən danışacağıq.

Birlik Paket Meneceri

Paylaşılan Resurs Paylama Metodları

Fərqli layihələr üçün paylaşılan resurslardan istifadə etməyin birdən çox yolu var, lakin hər bir yanaşmanın müsbət və mənfi tərəfləri var.

1. Dublikasiya - biz layihələr arasında resursları “əl ilə” təkrar edirik.

Pros:

  • Bütün növ resurslar üçün uyğundur.
  • Asılılıq problemi yoxdur.
  • Aktiv GUID-ləri ilə bağlı heç bir problem yoxdur.

Eksiler:

  • Nəhəng depolar.
  • Versiya imkanları yoxdur.
  • Paylaşılan resurslara dəyişiklikləri izləməkdə çətinlik.
  • Paylaşılan resursları yeniləməkdə çətinlik.

2. Git alt modulları — xarici submodullar vasitəsilə paylaşılan resursların paylanması.

Pros:

  • Mənbələrlə işləyə bilərsiniz.
  • Aktivləri paylaya bilərsiniz.
  • Asılılıq problemi yoxdur.

Eksiler:

  • Git təcrübəsi tələb olunur.
  • Git binar fayllarla o qədər də dost deyil - LFS-ni qoşmalı olacaqsınız.
  • Depolar üçün giriş nəzarəti.
  • Versiyaların təkmilləşdirilməsi və aşağı salınması ilə bağlı çətinliklər.
  • GUID toqquşmaları mümkündür və onları həll etmək üçün Unity tərəfindən aydın davranış yoxdur.

3. NuGet - paylaşılan kitabxanaların NuGet paketləri vasitəsilə paylanması.

Pros:

  • Birlikdən asılı olmayan layihələrlə rahat iş.
  • Rahat versiya və asılılıq həlli.

Eksiler:

  • Unity qutudan kənar NuGet paketləri ilə işləyə bilməz (GitHub-da siz Unity üçün NuGet Paket Meneceri tapa bilərsiniz, bu, bunu düzəldir, lakin bəzi nüanslar var).
  • Digər növ aktivlərin bölüşdürülməsində çətinliklər.

4. Unity Package Manager - Unity üçün yerli həll yolu ilə paylaşılan resursların paylanması.

Pros:

  • Paketlərlə işləmək üçün yerli interfeys.
  • GUID konfliktləri səbəbindən paketlərdə .meta fayllarının üzərinə yazılmasından qorunma.
  • Versiyalaşdırma imkanı.
  • Birlik üçün bütün növ resursları yaymaq imkanı.

Eksiler:

  • GUID münaqişələri hələ də baş verə bilər.
  • İcra üçün heç bir sənəd yoxdur.

Sonuncu üsul mənfi cəhətlərdən daha çox üstünlüklərə malikdir. Ancaq sənədlərin olmaması səbəbindən indi çox populyar deyil və buna görə də bu barədə ətraflı danışacağıq.

Birlik Paket Meneceri

Unity Package Manager (UPM) paket idarəetmə vasitəsidir. O, Unity 2018.1-də əlavə edilib və yalnız Unity Technologies tərəfindən hazırlanmış paketlər üçün istifadə edilib. Bununla belə, 2018.3 versiyasından başlayaraq fərdi paketlər əlavə etmək mümkün oldu.

Birlik Paket Meneceri
Birlik Paket Meneceri İnterfeysi

Paketlər layihə mənbələrində bitmir (Aktivlər kataloqu). Onlar ayrı bir kataloqdadırlar %projectFolder%/Library/PackageCache və layihəyə heç bir şəkildə təsir etmir, onların mənbə kodunda qeydləri yalnız fayldadır packages/manifest.json.

Birlik Paket Meneceri
Layihə fayl sistemindəki paketlər

Paket mənbələri

UPM bir neçə paket mənbəyindən istifadə edə bilər:

1. Fayl sistemi.

Pros:

  • İcra sürəti.
  • Üçüncü tərəf alətləri tələb etmir.

Eksiler:

  • Versiyada çətinlik.
  • Layihə ilə işləyən hər kəs üçün fayl sisteminə ortaq giriş tələb olunur.

2. Git deposu.

Pros:

  • Sizə lazım olan tək şey Git repozitoriyasıdır.

Eksiler:

  • UPM pəncərəsi vasitəsilə versiyalar arasında keçid edə bilməzsiniz.
  • Bütün Git depoları ilə işləmir.

3. npm deposu.

Pros:

  • UPM funksionallığını tam dəstəkləyir və rəsmi Unity paketlərini yaymaq üçün istifadə olunur.

Eksiler:

  • Hazırda "-preview" istisna olmaqla, paketlərin bütün sətir versiyalarına məhəl qoymur.

Aşağıda UPM + npm tətbiqinə baxacağıq. Bu paket rahatdır, çünki o, istənilən resurs növü ilə işləməyə və paket versiyalarını idarə etməyə imkan verir, həmçinin yerli UPM interfeysini tam dəstəkləyir.

Onu npm deposu kimi istifadə edə bilərsiniz Verdaççio. Ətraflı var sənədlər, və onu işə salmaq üçün sadəcə bir neçə əmr tələb olunur.

Ətraf mühitin qurulması

Əvvəlcə quraşdırmaq lazımdır node.js.

Paket yaradılması

Paket yaratmaq üçün faylı yerləşdirmək lazımdır package.json, onu təsvir edəcək, bu paketin məzmunu ilə kataloqa. Aşağıdakıları etməlisiniz:

Paket etmək istədiyimiz layihə qovluğuna keçin.

Npm init əmrini işə salın və dialoq zamanı tələb olunan dəyərləri daxil edin. Ad üçün adı əks domen formatında göstərin, məsələn, com.plarium.somepackage.
Paket adını rahat şəkildə göstərmək üçün package.json-a displayName xassəsini əlavə edin və onu doldurun.

npm js yönümlü olduğundan, fayl bizə lazım olmayan, Unity-nin istifadə etmədiyi əsas və skript xassələrini ehtiva edir. Paketin təsvirini qarışdırmamaq üçün onları çıxarmaq daha yaxşıdır. Fayl bu kimi görünməlidir:

  1. Paket etmək istədiyimiz layihə qovluğuna keçin.
  2. Npm init əmrini işə salın və dialoq zamanı tələb olunan dəyərləri daxil edin. Ad üçün adı əks domen formatında göstərin, məsələn, com.plarium.somepackage.
  3. Paket adını rahat şəkildə göstərmək üçün package.json-a displayName xassəsini əlavə edin və onu doldurun.
  4. npm js yönümlü olduğundan, fayl bizə lazım olmayan, Unity-nin istifadə etmədiyi əsas və skript xassələrini ehtiva edir. Paketin təsvirini qarışdırmamaq üçün onları çıxarmaq daha yaxşıdır. Fayl bu kimi görünməlidir:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Unity-ni açın və package.json üçün .meta faylı yaradın (Unity .meta faylları olmayan aktivləri görmür, Unity paketləri yalnız oxumaq üçün açılır).

Paket göndərilir

Paketi göndərmək üçün əmri yerinə yetirməlisiniz: npm publish --registry *адрес до хранилища пакетов*.

Unity Package Manager vasitəsilə paketlərin quraşdırılması və yenilənməsi

Birlik layihəsinə paket əlavə etmək üçün sizə lazımdır:

  1. Fayla əlavə edin manifest.json paketlərin mənbəyi haqqında məlumat. Bunu etmək üçün əmlak əlavə etməlisiniz scopedRegistries və xüsusi əhatə dairələrinin axtarılacağı əhatə dairələrini və mənbə ünvanını göstərin.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Unity-ə gedin və Paket Meneceri pəncərəsini açın (xüsusi paketlərlə işləmək daxili paketlərlə işləməkdən fərqlənmir).
  3. Bütün Paketləri seçin.
  4. Lazım olan paketi tapın və əlavə edin.

Birlik Paket Meneceri

Mənbələrlə işləmək və sazlama

Mənbələrin layihəyə qoşulması üçün yaratmaq lazımdır Assambleyanın tərifi paket üçün.

Paketlərdən istifadə sazlama seçimlərinizi məhdudlaşdırmır. Bununla belə, Unity-də paketlərlə işləyərkən, paketdə səhv baş veribsə, konsoldakı xətanı klikləməklə IDE-yə keçə bilməzsiniz. Bu, Unity-nin skriptləri ayrıca fayllar kimi görməməsi ilə əlaqədardır, çünki Assambleya Tərifindən istifadə edərkən onlar kitabxanaya toplanır və layihəyə daxil edilir. Layihədən mənbələrlə işləyərkən IDE-ə klikləmək mümkündür.

Bağlı paketi olan layihədə skript:

Birlik Paket Meneceri
İşləmə nöqtəsi olan paketdən skript:

Birlik Paket Meneceri

Paketlərə təcili düzəlişlər

Layihəyə əlavə edilən birlik paketləri yalnız oxunur, lakin paket keşində redaktə edilə bilər. Bunu etmək üçün sizə lazımdır:

  1. Paket keşində paketə keçin.

    Birlik Paket Meneceri

  2. Lazımi dəyişiklikləri edin.
  3. Fayldakı versiyanı yeniləyin package.json.
  4. Paket göndərin npm publish --registry *адрес до хранилища пакетов*.
  5. UPM interfeysi vasitəsilə paket versiyasını düzəldilmiş versiyaya yeniləyin.

Paket idxal münaqişələri

Paketləri idxal edərkən aşağıdakı GUID ziddiyyətləri baş verə bilər:

  1. Paket - paket. Əgər paketi idxal edərkən artıq əlavə edilmiş paketlərin eyni GUID-ə malik aktivləri ehtiva etdiyi aşkar edilərsə, idxal edilmiş paketdən uyğun GUID-lərə malik aktivlər layihəyə əlavə edilməyəcək.
  2. Paket bir layihədir. Əgər paketi idxal edərkən layihədə uyğun GUID-lərə malik aktivlərin olduğu aşkar edilərsə, paketdəki aktivlər layihəyə əlavə edilməyəcək. Bununla belə, onlardan asılı olan aktivlər layihədəki aktivlərdən istifadə etməyə başlayacaqlar.

Aktivlərin layihədən paketə köçürülməsi

Unity açıq olduğu müddətdə aktivi layihədən paketə köçürsəniz, onun funksionallığı qorunacaq və asılı aktivlərdəki keçidlər paketdəki aktivdən istifadə etməyə başlayacaq.

Vacibdir: Aktivi layihədən paketə köçürərkən yuxarıdakı bölmədə təsvir edilən “Paket - Layihə” konflikti baş verəcək.

Münaqişələrin mümkün həlli yolları

  1. Toqquşmaları aradan qaldırmaq üçün bütün aktivləri idxal edərkən öz alqoritmlərimizdən istifadə edərək GUID-lərin yenidən təyin edilməsi.
  2. Bütün aktivləri bir layihəyə əlavə etmək və sonra onları paketlərə bölmək.
  3. Bütün aktivlərin GUID-lərini ehtiva edən verilənlər bazası yaratmaq və paketləri göndərərkən yoxlama aparmaq.

Nəticə

UPM, mövcud metodlara layiqli alternativ ola bilən Unity-də paylaşılan resursların paylanması üçün yeni bir həlldir. Məqalədə təsvir olunan tövsiyələr real hallara əsaslanırdı. Ümid edirik ki, siz onları faydalı tapacaqsınız.

Mənbə: www.habr.com

Добавить комментарий