Бірлік - бұл біраз уақыттан бері бар және үнемі дамып келе жатқан платформа. Дегенмен, онда бір уақытта бірнеше жобалармен жұмыс істегенде, жалпы көздерді (.cs), кітапханаларды (.dll) және басқа активтерді (суреттер, дыбыстар, үлгілер, префабтар) пайдалануда әлі де қиындықтар туындауы мүмкін. Бұл мақалада біз Unity үшін осындай проблеманы шешуге қатысты тәжірибеміз туралы айтатын боламыз.
Ортақ ресурстарды тарату әдістері
Әртүрлі жобалар үшін ортақ ресурстарды пайдаланудың бірнеше жолы бар, бірақ әр тәсілдің өз артықшылықтары мен кемшіліктері бар.
1. Қайталау – біз жобалар арасында ресурстарды «қолмен» қайталаймыз.
Артықшылықтары:
- Ресурстардың барлық түрлеріне жарамды.
- Тәуелділік проблемалары жоқ.
- Актив GUID-терімен проблемалар жоқ.
Кемшіліктері:
- Үлкен қоймалар.
- Нұсқалау мүмкіндігі жоқ.
- Ортақ ресурстардағы өзгерістерді қадағалау қиын.
- Ортақ ресурстарды жаңарту қиын.
2.
Артықшылықтары:
- Сіз дереккөздермен жұмыс істей аласыз.
- Сіз активтерді тарата аласыз.
- Тәуелділік проблемалары жоқ.
Кемшіліктері:
- 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 Package Manager интерфейсі
Бумалар жоба көздерінде аяқталмайды (Активтер каталогы). Олар бөлек каталогта %projectFolder%/Library/PackageCache
және жобаға ешқандай әсер етпейді, олардың бастапқы кодындағы жалғыз ескертпесі файлда packages/manifest.json
.
Жобаның файлдық жүйесіндегі бумалар
Пакет көздері
UPM бірнеше пакет көздерін пайдалана алады:
1. Файлдық жүйе.
Артықшылықтары:
- Іске асыру жылдамдығы.
- Үшінші тарап құралдарын қажет етпейді.
Кемшіліктері:
- Нұсқаларды жасауда қиындықтар.
- Файлдық жүйеге ортақ рұқсат жобамен жұмыс істейтіндердің барлығына қажет.
2. Git репозиторийі.
Артықшылықтары:
- Сізге тек Git репозиторийі қажет.
Кемшіліктері:
- UPM терезесі арқылы нұсқалар арасында ауысу мүмкін емес.
- Барлық Git репозиторийлерімен жұмыс істемейді.
3. npm репозиторийі.
Артықшылықтары:
- UPM функционалдығын толығымен қолдайды және ресми Unity пакеттерін тарату үшін пайдаланылады.
Кемшіліктері:
- Қазіргі уақытта "-алдын ала қараудан" басқа пакеттердің барлық жол нұсқаларын елемейді.
Төменде UPM + npm іске асыруды қарастырамыз. Бұл жинақ ыңғайлы, себебі ол ресурстардың кез келген түрімен жұмыс істеуге және пакет нұсқаларын басқаруға мүмкіндік береді, сонымен қатар жергілікті UPM интерфейсін толығымен қолдайды.
Сіз оны npm репозиторийі ретінде пайдалана аласыз
Қоршаған ортаны орнату
Алдымен орнату керек
Пакет құру
Буманы жасау үшін файлды орналастыру керек package.json
, ол оны сипаттайды, осы буманың мазмұны бар каталогқа. Сізге келесі әрекеттерді орындау қажет:
Біз пакет жасағымыз келетін жоба каталогына өтіңіз.
npm init пәрменін іске қосыңыз және диалогтық терезеде қажетті мәндерді енгізіңіз. Атау үшін атауды кері домен пішімінде көрсетіңіз, мысалы com.plarium.somepackage.
Бума атын ыңғайлы көрсету үшін, displayName сипатын package.json ішіне қосып, оны толтырыңыз.
npm js-бағдарланғандықтан, файлда Unity қолданбайтын бізге қажет емес негізгі және сценарийлер сипаттары бар. Пакет сипаттамасын шатастырмау үшін оларды алып тастаған дұрыс. Файл келесідей болуы керек:
- Біз пакет жасағымыз келетін жоба каталогына өтіңіз.
- npm init пәрменін іске қосыңыз және диалогтық терезеде қажетті мәндерді енгізіңіз. Атау үшін атауды кері домен пішімінде көрсетіңіз, мысалы com.plarium.somepackage.
- Бума атын ыңғайлы көрсету үшін, displayName сипатын package.json ішіне қосып, оны толтырыңыз.
- 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" }
- Unity ашыңыз және package.json үшін .meta файлын жасаңыз (Unity .meta файлдары жоқ активтерді көрмейді, Unity бумалары тек оқу үшін ашылады).
Пакет жіберу
Пакетті жіберу үшін келесі пәрменді орындау керек: npm publish --registry *адрес до хранилища пакетов*
.
Unity Package Manager арқылы бумаларды орнату және жаңарту
Unity жобасына бума қосу үшін сізге қажет:
- Файлға қосу
manifest.json
пакеттердің қайнар көзі туралы ақпарат. Мұны істеу үшін сипатты қосу керекscopedRegistries
және нақты аумақтар ізделетін аумақтарды және бастапқы мекенжайды көрсетіңіз."scopedRegistries": [ { "name": "Main", "url": "адрес до хранилища пакетов", "scopes": [ "com.plarium" ] } ]
- Unity бөліміне өтіп, Пакет менеджері терезесін ашыңыз (теңшелетін бумалармен жұмыс істеу кірістірілген пакеттермен жұмыс істеуден еш айырмашылығы жоқ).
- Барлық пакеттерді таңдаңыз.
- Қажетті пакетті тауып, оны қосыңыз.
Дереккөздермен жұмыс және жөндеу
Дереккөздер жобаға қосылуы үшін сіз жасауыңыз керек
Бумаларды пайдалану отладтау опцияларын шектемейді. Дегенмен, Unity бағдарламасында бумалармен жұмыс істегенде, егер қате пакетте орын алса, консольдегі қатені басу арқылы IDE-ге өту мүмкін емес. Бұл Unity сценарийлерді бөлек файлдар ретінде көрмейтіндігіне байланысты, өйткені Ассамблея анықтамасын пайдаланған кезде олар кітапханаға жиналады және жобаға қосылады. Жобадағы көздермен жұмыс істегенде, IDE түймесін басу қолжетімді болады.
Қосылған пакеті бар жобадағы сценарий:
Жұмыс тоқтау нүктесі бар пакеттен сценарий:
Пакеттерге шұғыл түзетулер
Жобаға қосылған Unity бумалары тек оқуға арналған, бірақ бума кэшінде өңдеуге болады. Мұны істеу үшін сізге қажет:
- Бума кэшіндегі бумаға өтіңіз.
- Қажетті өзгерістерді енгізіңіз.
- Файлдағы нұсқаны жаңарту
package.json
. - Пакетті жіберу
npm publish --registry *адрес до хранилища пакетов*
. - UPM интерфейсі арқылы пакет нұсқасын түзетілген нұсқасына жаңартыңыз.
Пакетті импорттау қайшылықтары
Бумаларды импорттау кезінде келесі GUID қайшылықтары орын алуы мүмкін:
- Пакет – бума. Егер пакетті импорттау кезінде бұрыннан қосылған пакеттерде бірдей GUID бар активтер бар екені анықталса, импортталған бумадағы сәйкес GUID идентификаторлары бар активтер жобаға қосылмайды.
- Пакет - бұл жоба. Егер буманы импорттау кезінде жобада сәйкес GUID кодтары бар активтер бар екені анықталса, бумадағы активтер жобаға қосылмайды. Дегенмен, оларға тәуелді активтер жобадағы активтерді пайдалана бастайды.
Активтерді жобадан пакетке ауыстыру
Unity ашық кезде жобадан активті пакетке тасымалдасаңыз, оның функционалдығы сақталады және тәуелді активтердегі сілтемелер бумадағы активті пайдалана бастайды.
маңызды: Активті жобадан бумаға көшіру кезінде жоғарыдағы бөлімде сипатталған «Бума - жоба» қайшылығы орын алады.
Қақтығыстардың ықтимал шешімдері
- Соқтығыстарды жою үшін барлық активтерді импорттау кезінде GUID кодтарын өз алгоритмдерімізді пайдаланып қайта тағайындау.
- Барлық активтерді бір жобаға қосу, содан кейін оларды пакеттерге бөлу.
- Барлық активтердің GUID кодтары бар дерекқорды жасау және пакеттерді жіберу кезінде тексеруді жүргізу.
қорытынды
UPM - Unity жүйесінде ортақ ресурстарды таратуға арналған жаңа шешім, ол бар әдістерге лайықты балама бола алады. Мақалада сипатталған ұсыныстар нақты жағдайларға негізделген. Сіз оларды пайдалы деп санаймыз.
Ақпарат көзі: www.habr.com