Unity пакет менеджері

Бірлік - бұл біраз уақыттан бері бар және үнемі дамып келе жатқан платформа. Дегенмен, онда бір уақытта бірнеше жобалармен жұмыс істегенде, жалпы көздерді (.cs), кітапханаларды (.dll) және басқа активтерді (суреттер, дыбыстар, үлгілер, префабтар) пайдалануда әлі де қиындықтар туындауы мүмкін. Бұл мақалада біз Unity үшін осындай проблеманы шешуге қатысты тәжірибеміз туралы айтатын боламыз.

Unity пакет менеджері

Ортақ ресурстарды тарату әдістері

Әртүрлі жобалар үшін ортақ ресурстарды пайдаланудың бірнеше жолы бар, бірақ әр тәсілдің өз артықшылықтары мен кемшіліктері бар.

1. Қайталау – біз жобалар арасында ресурстарды «қолмен» қайталаймыз.

Артықшылықтары:

  • Ресурстардың барлық түрлеріне жарамды.
  • Тәуелділік проблемалары жоқ.
  • Актив GUID-терімен проблемалар жоқ.

Кемшіліктері:

  • Үлкен қоймалар.
  • Нұсқалау мүмкіндігі жоқ.
  • Ортақ ресурстардағы өзгерістерді қадағалау қиын.
  • Ортақ ресурстарды жаңарту қиын.

2. Git субмодульдері — сыртқы ішкі модульдер арқылы ортақ ресурстарды бөлу.

Артықшылықтары:

  • Сіз дереккөздермен жұмыс істей аласыз.
  • Сіз активтерді тарата аласыз.
  • Тәуелділік проблемалары жоқ.

Кемшіліктері:

  • Git тәжірибесі қажет.
  • Git екілік файлдармен өте ыңғайлы емес - сізге LFS қосылуы керек.
  • Репозиторийлерге қол жеткізуді басқару.
  • Нұсқаларды жаңарту және төмендету қиындықтары.
  • GUID соқтығысуы мүмкін және оларды шешу үшін Unity тарапынан нақты әрекет жоқ.

3. NuGet – ортақ кітапханаларды NuGet бумалары арқылы тарату.

Артықшылықтары:

  • Unity-ге тәуелді емес жобалармен ыңғайлы жұмыс.
  • Ыңғайлы нұсқа және тәуелділік ажыратымдылығы.

Кемшіліктері:

  • Unity қораптан тыс NuGet бумаларымен жұмыс істей алмайды (GitHub сайтында сіз Unity үшін NuGet пакет менеджерін таба аласыз, ол мұны түзетеді, бірақ кейбір нюанстар бар).
  • Активтердің басқа түрлерін бөлудегі қиындықтар.

4. Unity Package Manager - Unity үшін жергілікті шешім арқылы ортақ ресурстарды тарату.

Артықшылықтары:

  • Пакеттермен жұмыс істеуге арналған жергілікті интерфейс.
  • GUID қайшылықтарына байланысты бумалардағы .meta файлдарын қайта жазудан қорғау.
  • Нұсқалау мүмкіндігі.
  • Unity үшін ресурстардың барлық түрлерін тарату мүмкіндігі.

Кемшіліктері:

  • GUID қайшылықтары әлі де орын алуы мүмкін.
  • Іске асыру үшін құжаттама жоқ.

Соңғы әдіс кемшіліктерге қарағанда артықшылықтарға ие. Дегенмен, құжаттаманың болмауына байланысты ол қазір өте танымал емес, сондықтан біз оған егжей-тегжейлі тоқталамыз.

Unity пакет менеджері

Unity Package Manager (UPM) буманы басқару құралы болып табылады. Ол Unity 2018.1 нұсқасына қосылды және тек Unity Technologies әзірлеген пакеттер үшін пайдаланылды. Дегенмен, 2018.3 нұсқасынан бастап реттелетін бумаларды қосу мүмкін болды.

Unity пакет менеджері
Unity Package Manager интерфейсі

Бумалар жоба көздерінде аяқталмайды (Активтер каталогы). Олар бөлек каталогта %projectFolder%/Library/PackageCache және жобаға ешқандай әсер етпейді, олардың бастапқы кодындағы жалғыз ескертпесі файлда packages/manifest.json.

Unity пакет менеджері
Жобаның файлдық жүйесіндегі бумалар

Пакет көздері

UPM бірнеше пакет көздерін пайдалана алады:

1. Файлдық жүйе.

Артықшылықтары:

  • Іске асыру жылдамдығы.
  • Үшінші тарап құралдарын қажет етпейді.

Кемшіліктері:

  • Нұсқаларды жасауда қиындықтар.
  • Файлдық жүйеге ортақ рұқсат жобамен жұмыс істейтіндердің барлығына қажет.

2. Git репозиторийі.

Артықшылықтары:

  • Сізге тек Git репозиторийі қажет.

Кемшіліктері:

  • UPM терезесі арқылы нұсқалар арасында ауысу мүмкін емес.
  • Барлық Git репозиторийлерімен жұмыс істемейді.

3. npm репозиторийі.

Артықшылықтары:

  • UPM функционалдығын толығымен қолдайды және ресми Unity пакеттерін тарату үшін пайдаланылады.

Кемшіліктері:

  • Қазіргі уақытта "-алдын ала қараудан" басқа пакеттердің барлық жол нұсқаларын елемейді.

Төменде UPM + npm іске асыруды қарастырамыз. Бұл жинақ ыңғайлы, себебі ол ресурстардың кез келген түрімен жұмыс істеуге және пакет нұсқаларын басқаруға мүмкіндік береді, сонымен қатар жергілікті UPM интерфейсін толығымен қолдайды.

Сіз оны npm репозиторийі ретінде пайдалана аласыз Вердаччо. егжей-тегжейлі бар құжаттама, және оны іске қосу үшін тек бірнеше пәрмен қажет.

Қоршаған ортаны орнату

Алдымен орнату керек node.js.

Пакет құру

Буманы жасау үшін файлды орналастыру керек package.json, ол оны сипаттайды, осы буманың мазмұны бар каталогқа. Сізге келесі әрекеттерді орындау қажет:

Біз пакет жасағымыз келетін жоба каталогына өтіңіз.

npm init пәрменін іске қосыңыз және диалогтық терезеде қажетті мәндерді енгізіңіз. Атау үшін атауды кері домен пішімінде көрсетіңіз, мысалы com.plarium.somepackage.
Бума атын ыңғайлы көрсету үшін, displayName сипатын package.json ішіне қосып, оны толтырыңыз.

npm js-бағдарланғандықтан, файлда Unity қолданбайтын бізге қажет емес негізгі және сценарийлер сипаттары бар. Пакет сипаттамасын шатастырмау үшін оларды алып тастаған дұрыс. Файл келесідей болуы керек:

  1. Біз пакет жасағымыз келетін жоба каталогына өтіңіз.
  2. npm init пәрменін іске қосыңыз және диалогтық терезеде қажетті мәндерді енгізіңіз. Атау үшін атауды кері домен пішімінде көрсетіңіз, мысалы com.plarium.somepackage.
  3. Бума атын ыңғайлы көрсету үшін, displayName сипатын package.json ішіне қосып, оны толтырыңыз.
  4. npm js-бағдарланғандықтан, файлда Unity қолданбайтын бізге қажет емес негізгі және сценарийлер сипаттары бар. Пакет сипаттамасын шатастырмау үшін оларды алып тастаған дұрыс. Файл келесідей болуы керек:
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. Unity ашыңыз және package.json үшін .meta файлын жасаңыз (Unity .meta файлдары жоқ активтерді көрмейді, Unity бумалары тек оқу үшін ашылады).

Пакет жіберу

Пакетті жіберу үшін келесі пәрменді орындау керек: npm publish --registry *адрес до хранилища пакетов*.

Unity Package Manager арқылы бумаларды орнату және жаңарту

Unity жобасына бума қосу үшін сізге қажет:

  1. Файлға қосу manifest.json пакеттердің қайнар көзі туралы ақпарат. Мұны істеу үшін сипатты қосу керек scopedRegistries және нақты аумақтар ізделетін аумақтарды және бастапқы мекенжайды көрсетіңіз.
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. Unity бөліміне өтіп, Пакет менеджері терезесін ашыңыз (теңшелетін бумалармен жұмыс істеу кірістірілген пакеттермен жұмыс істеуден еш айырмашылығы жоқ).
  3. Барлық пакеттерді таңдаңыз.
  4. Қажетті пакетті тауып, оны қосыңыз.

Unity пакет менеджері

Дереккөздермен жұмыс және жөндеу

Дереккөздер жобаға қосылуы үшін сіз жасауыңыз керек Ассамблея анықтамасы пакет үшін.

Бумаларды пайдалану отладтау опцияларын шектемейді. Дегенмен, Unity бағдарламасында бумалармен жұмыс істегенде, егер қате пакетте орын алса, консольдегі қатені басу арқылы IDE-ге өту мүмкін емес. Бұл Unity сценарийлерді бөлек файлдар ретінде көрмейтіндігіне байланысты, өйткені Ассамблея анықтамасын пайдаланған кезде олар кітапханаға жиналады және жобаға қосылады. Жобадағы көздермен жұмыс істегенде, IDE түймесін басу қолжетімді болады.

Қосылған пакеті бар жобадағы сценарий:

Unity пакет менеджері
Жұмыс тоқтау нүктесі бар пакеттен сценарий:

Unity пакет менеджері

Пакеттерге шұғыл түзетулер

Жобаға қосылған Unity бумалары тек оқуға арналған, бірақ бума кэшінде өңдеуге болады. Мұны істеу үшін сізге қажет:

  1. Бума кэшіндегі бумаға өтіңіз.

    Unity пакет менеджері

  2. Қажетті өзгерістерді енгізіңіз.
  3. Файлдағы нұсқаны жаңарту package.json.
  4. Пакетті жіберу npm publish --registry *адрес до хранилища пакетов*.
  5. UPM интерфейсі арқылы пакет нұсқасын түзетілген нұсқасына жаңартыңыз.

Пакетті импорттау қайшылықтары

Бумаларды импорттау кезінде келесі GUID қайшылықтары орын алуы мүмкін:

  1. Пакет – бума. Егер пакетті импорттау кезінде бұрыннан қосылған пакеттерде бірдей GUID бар активтер бар екені анықталса, импортталған бумадағы сәйкес GUID идентификаторлары бар активтер жобаға қосылмайды.
  2. Пакет - бұл жоба. Егер буманы импорттау кезінде жобада сәйкес GUID кодтары бар активтер бар екені анықталса, бумадағы активтер жобаға қосылмайды. Дегенмен, оларға тәуелді активтер жобадағы активтерді пайдалана бастайды.

Активтерді жобадан пакетке ауыстыру

Unity ашық кезде жобадан активті пакетке тасымалдасаңыз, оның функционалдығы сақталады және тәуелді активтердегі сілтемелер бумадағы активті пайдалана бастайды.

маңызды: Активті жобадан бумаға көшіру кезінде жоғарыдағы бөлімде сипатталған «Бума - жоба» қайшылығы орын алады.

Қақтығыстардың ықтимал шешімдері

  1. Соқтығыстарды жою үшін барлық активтерді импорттау кезінде GUID кодтарын өз алгоритмдерімізді пайдаланып қайта тағайындау.
  2. Барлық активтерді бір жобаға қосу, содан кейін оларды пакеттерге бөлу.
  3. Барлық активтердің GUID кодтары бар дерекқорды жасау және пакеттерді жіберу кезінде тексеруді жүргізу.

қорытынды

UPM - Unity жүйесінде ортақ ресурстарды таратуға арналған жаңа шешім, ол бар әдістерге лайықты балама бола алады. Мақалада сипатталған ұсыныстар нақты жағдайларға негізделген. Сіз оларды пайдалы деп санаймыз.

Ақпарат көзі: www.habr.com

пікір қалдыру