Менеҷери бастаи Unity

Ваҳдат як платформаест, ки муддати тӯлонӣ вуҷуд дорад ва пайваста инкишоф меёбад. Бо вуҷуди ин, ҳангоми кор дар он бо якчанд лоиҳаҳо дар як вақт, шумо ҳоло ҳам метавонед дар истифодаи манбаъҳои умумӣ (.cs), китобхонаҳо (.dll) ва дигар дороиҳо (тасвирҳо, садоҳо, моделҳо, префабҳо) ба мушкилот дучор шавед. Дар ин мақола мо дар бораи таҷрибаи худ бо роҳи ҳалли аслии чунин мушкилот барои Юнит сӯҳбат хоҳем кард.

Менеҷери бастаи Unity

Усулҳои тақсимоти захираҳои муштарак

Зиёда аз як роҳи истифодаи захираҳои муштарак барои лоиҳаҳои гуногун вуҷуд дорад, аммо ҳар як равиш ҷиҳатҳои мусбат ва манфии худро дорад.

1. Дупликатсия - мо захираҳоро байни лоиҳаҳо «дастӣ» такрор мекунем.

Тарафдор:

  • Муносиб барои ҳама намуди захираҳо.
  • Мушкилоти вобастагӣ нест.
  • Бо GUID-ҳои дороиҳо мушкилот вуҷуд надорад.

Эзоҳ:

  • Анборҳои азим.
  • Имконияти нусхабардорӣ вуҷуд надорад.
  • Мушкилии пайгирии тағирот дар захираҳои муштарак.
  • Мушкилоти навсозии захираҳои муштарак.

2. Субмодулҳои Git — тақсимоти захираҳои муштарак тавассути зермодулҳои беруна.

Тарафдор:

  • Шумо метавонед бо манбаъҳо кор кунед.
  • Шумо метавонед дороиҳоро тақсим кунед.
  • Мушкилоти вобастагӣ нест.

Эзоҳ:

  • Таҷрибаи Git талаб карда мешавад.
  • Git бо файлҳои дуӣ чандон дӯстона нест - шумо бояд LFS-ро пайваст кунед.
  • Назорати дастрасӣ ба анборҳо.
  • Мушкилот бо навсозӣ ва паст кардани версияҳо.
  • Бархӯрдҳои GUID имконпазир аст ва аз ҷониби Юнитӣ барои ҳалли онҳо рафтори дақиқ вуҷуд надорад.

3. NuGet - тақсимоти китобхонаҳои муштарак тавассути бастаҳои NuGet.

Тарафдор:

  • Кори қулай бо лоиҳаҳое, ки аз Unity вобаста нестанд.
  • Версияи қулай ва ҳалли вобастагӣ.

Эзоҳ:

  • Unity наметавонад бо бастаҳои NuGet берун аз қуттӣ кор кунад (дар GitHub шумо метавонед менеҷери NuGet Package for Unity -ро пайдо кунед, ки инро ислоҳ мекунад, аммо баъзе нозукиҳо мавҷуданд).
  • Мушкилот дар тақсимоти дигар намудҳои дороиҳо.

4. Менеҷери бастаи Unity - тақсимоти захираҳои муштарак тавассути ҳалли аслӣ барои Unity.

Тарафдор:

  • Интерфейси аслӣ барои кор бо бастаҳо.
  • Муҳофизат аз баргардонидани файлҳои .meta дар бастаҳо аз сабаби ихтилофоти GUID.
  • Имконияти версияи.
  • Имконияти тақсими ҳама намуди захираҳо барои Unity.

Эзоҳ:

  • Низоъҳои GUID то ҳол метавонанд рух диҳанд.
  • Ҳуҷҷат барои татбиқ вуҷуд надорад.

Усули охирин нисбат ба нуқсонҳо афзалиятҳои бештар дорад. Бо вуҷуди ин, он ҳоло аз сабаби набудани ҳуҷҷатҳо чандон маъмул нест ва аз ин рӯ мо ба таври муфассал дар бораи он таваққуф хоҳем кард.

Менеҷери бастаи Unity

Unity Package Manager (UPM) як воситаи идоракунии бастаҳо мебошад. Он дар Unity 2018.1 илова карда шуд ва танҳо барои бастаҳое истифода мешуд, ки аз ҷониби Unity Technologies таҳия шудаанд. Аммо, аз версияи 2018.3 сар карда, илова кардани бастаҳои фармоишӣ имконпазир шуд.

Менеҷери бастаи Unity
Интерфейси менеҷери бастаи Unity

Бастаҳо дар манбаъҳои лоиҳа хотима намеёбанд (Феҳристи дороиҳо). Онҳо дар феҳристи алоҳида ҷойгиранд %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-ро кушоед ва файли .meta барои package.json эҷод кунед (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 мебошад, ки метавонад ба усулҳои мавҷуда алтернативаи арзанда бошад. Тавсияҳои дар мақола тавсифшуда ба ҳолатҳои воқеӣ асос ёфтаанд. Мо умедворем, ки шумо онҳоро муфид хоҳед ёфт.

Манбаъ: will.com

Илова Эзоҳ