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

Биримдик - бул бир топ убакыттан бери иштеп келе жаткан жана тынымсыз өнүгүп келе жаткан платформа. Бирок, бир эле учурда бир нече долбоорлор менен иштеп жатканда, сиз дагы эле жалпы булактарды (.cs), китепканаларды (.dll) жана башка активдерди (сүрөттөрдү, үндөрдү, моделдерди, префабтарды) колдонууда кыйынчылыктарга туш болушуңуз мүмкүн. Бул макалада биз Биримдик үчүн ушундай көйгөйдү чечүү боюнча тажрыйбабыз жөнүндө сүйлөшөбүз.

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

Жалпы ресурстарды бөлүштүрүү ыкмалары

Ар кандай долбоорлор үчүн жалпы ресурстарды колдонуунун бир нече жолу бар, бирок ар бир ыкманын жакшы жана жаман жактары бар.

1. Кайталоо - биз долбоорлордун ортосундагы ресурстарды "кол менен" кайталайбыз.

артыкчылыктары:

  • ресурстардын бардык түрлөрү үчүн ылайыктуу.
  • Көз карандылык көйгөйлөрү жок.
  • Актив GUIDдеринде эч кандай көйгөйлөр жок.

жактары:

  • Гигант репозиторийлер.
  • Версиялоо мүмкүнчүлүгү жок.
  • Бөлүшүлгөн ресурстардагы өзгөрүүлөргө көз салуу кыйынчылыгы.
  • Жалпы ресурстарды жаңыртуу кыйын.

2. Git субмодулдары — тышкы субмодулдар аркылуу жалпы ресурстарды бөлүштүрүү.

артыкчылыктары:

  • Сиз булактар ​​менен иштей аласыз.
  • Сиз активдерди бөлүштүрө аласыз.
  • Көз карандылык көйгөйлөрү жок.

жактары:

  • Git тажрыйбасы талап кылынат.
  • Git экилик файлдар менен анча жакшы эмес - сиз LFSди туташтырыңыз.
  • Репозиторийлер үчүн жеткиликтүүлүктү башкаруу.
  • Версияларды жаңыртуу жана төмөндөтүү кыйынчылыгы.
  • GUID кагылышуулары мүмкүн жана аларды чечүү үчүн Unity тарабынан так жүрүм-турум жок.

3. NuGet - жалпы китепканаларды NuGet пакеттери аркылуу бөлүштүрүү.

артыкчылыктары:

  • Биримдиктен көз каранды болбогон долбоорлор менен ыңгайлуу иштөө.
  • Ыңгайлуу версия жана көз карандылыкты чечүү.

жактары:

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

4. Unity Package Manager - Unity үчүн жергиликтүү чечим аркылуу бөлүшүлгөн ресурстарды бөлүштүрүү.

артыкчылыктары:

  • Пакеттер менен иштөө үчүн жергиликтүү интерфейс.
  • GUID чатактарынан улам пакеттерде .meta файлдарын кайра жазуудан коргоо.
  • Версиялоо мүмкүнчүлүгү.
  • Биримдик үчүн ресурстардын бардык түрлөрүн бөлүштүрүү мүмкүнчүлүгү.

жактары:

  • GUID чыр-чатактары дагы эле пайда болушу мүмкүн.
  • Ишке ашыруу үчүн эч кандай документ жок.

Акыркы ыкма кемчиликтерге караганда көбүрөөк артыкчылыктарга ээ. Бирок, азыр документтин жоктугунан анча популярдуу эмес, ошондуктан биз ага кеңири токтолобуз.

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

Unity Package Manager (UPM) – пакетти башкаруу куралы. Ал Unity 2018.1де кошулган жана Unity Technologies тарабынан иштелип чыккан пакеттер үчүн гана колдонулган. Бирок, 2018.3 версиясынан баштап, ыңгайлаштырылган пакеттерди кошуу мүмкүн болду.

Unity пакет менеджери
Unity Package Manager Interface

Пакеттер долбоордун булактарында (Активдер каталогу) бүтпөйт. Алар өзүнчө каталогдо %projectFolder%/Library/PackageCache жана долбоорго эч кандай таасир этпейт, алардын баштапкы кодунда гана эскертилиши файлда packages/manifest.json.

Unity пакет менеджери
Долбоордун файл тутумундагы пакеттер

Пакет булактары

UPM бир нече пакет булактарын колдоно алат:

1. Файл системасы.

артыкчылыктары:

  • Ишке ашыруу ылдамдыгы.
  • Үчүнчү тараптын куралдарын талап кылбайт.

жактары:

  • Версиялоодо кыйынчылык.
  • Долбоор менен иштеген ар бир адам үчүн файл тутумуна жалпы кирүү талап кылынат.

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

артыкчылыктары:

  • Сизге болгону Git репозиторий керек.

жактары:

  • UPM терезеси аркылуу версиялардын ортосунда которуштурууга болбойт.
  • Бардык Git репозиторийлери менен иштебейт.

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

артыкчылыктары:

  • UPM функциясын толугу менен колдойт жана расмий Unity пакеттерин жайылтуу үчүн колдонулат.

жактары:

  • Учурда пакеттердин "-preview" дан башка бардык сап версияларына көңүл бурбайт.

Төмөндө биз UPM + npm ишке ашырууну карайбыз. Бул таңгак ыңгайлуу, анткени ал ресурстун каалаган түрү менен иштөөгө жана топтомдун версияларын башкарууга мүмкүндүк берет, ошондой эле жергиликтүү UPM интерфейсин толук колдойт.

Сиз аны npm репозиторий катары колдоно аласыз Verdaccio. деталдары бар документтер, жана аны иштетүү үчүн бир нече гана буйрук талап кылынат.

Айлана-чөйрөнү орнотуу

Алгач сиз орнотуу керек node.js.

Пакет түзүү

Пакет түзүү үчүн файлды жайгаштырышыңыз керек package.json, бул пакеттин мазмуну менен каталогго, аны сүрөттөйт. Сиз төмөнкүлөрдү кылышыңыз керек:

Биз пакет жасагыбыз келген долбоордун каталогуна өтүңүз.

Npm init буйругун иштетиңиз жана диалогдун жүрүшүндө керектүү маанилерди киргизиңиз. Аты үчүн, атын тескери домен форматында көрсөтүңүз, мисалы com.plarium.somepackage.
Пакеттин атын ыңгайлуу көрсөтүү үчүн, package.json файлына displayName касиетин кошуп, аны толтуруңуз.

npm js-багытталгандыктан, файл бизге кереги жок, Unity колдонбогон негизги жана скрипттердин касиеттерин камтыйт. Пакеттин сүрөттөлүшүн баш аламан болбош үчүн аларды алып салуу жакшы. Файл бул сыяктуу көрүнүшү керек:

  1. Биз пакет жасагыбыз келген долбоордун каталогуна өтүңүз.
  2. Npm init буйругун иштетиңиз жана диалогдун жүрүшүндө керектүү маанилерди киргизиңиз. Аты үчүн, атын тескери домен форматында көрсөтүңүз, мисалы com.plarium.somepackage.
  3. Пакеттин атын ыңгайлуу көрсөтүү үчүн, package.json файлына displayName касиетин кошуп, аны толтуруңуз.
  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. Биримдикке өтүп, Пакет менеджеринин терезесин ачыңыз (өзгөчө пакеттер менен иштөө орнотулган пакеттер менен иштөөдөн эч айырмаланбайт).
  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 - бирдиктүү ресурстарды бөлүштүрүүнүн жаңы чечими, ал учурдагы методдорго татыктуу альтернатива боло алат. Макалада айтылган сунуштар реалдуу учурларга негизделген. Аларды пайдалуу деп ойлойбуз.

Source: www.habr.com

Комментарий кошуу