Unity багц менежер

Эв нэгдэл бол багагүй хугацаанд бий болсон, байнга шинэчлэгдэж байдаг платформ юм. Гэсэн хэдий ч, нэгэн зэрэг хэд хэдэн төсөлтэй ажиллахдаа нийтлэг эх сурвалж (.cs), номын сан (.dll) болон бусад хөрөнгийг (зураг, дуу чимээ, загвар, угсармал) ашиглахад бэрхшээлтэй тулгардаг. Энэ нийтлэлд бид Эв нэгдлийн төлөөх ийм асуудлыг шийдэх анхны арга туршлагаасаа ярих болно.

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 файлуудыг дарж бичихээс хамгаална.
  • Хувилбар хийх боломж.
  • Эв нэгдлийн бүх төрлийн нөөцийг хуваарилах чадвар.

Нөхцөл байдал:

  • GUID зөрчилтэй хэвээр байж болно.
  • Хэрэгжүүлэх баримт бичиг байхгүй.

Сүүлчийн арга нь сул талуудаас илүү давуу талтай. Гэсэн хэдий ч баримт бичиг дутмаг байгаа тул энэ нь одоо тийм ч түгээмэл биш байгаа тул бид үүнийг нарийвчлан авч үзэх болно.

Unity багц менежер

Unity Package Manager (UPM) нь багц удирдлагын хэрэгсэл юм. Үүнийг Unity 2018.1-д нэмсэн бөгөөд зөвхөн Unity Technologies-ийн боловсруулсан багцуудад ашигласан. Гэсэн хэдий ч 2018.3 хувилбараас эхлэн захиалгат багцуудыг нэмэх боломжтой болсон.

Unity багц менежер
Unity багц менежерийн интерфейс

Багцууд нь төслийн эх сурвалжид (Assets лавлах) дуусдаггүй. Тэдгээр нь тусдаа лавлахад байна %projectFolder%/Library/PackageCache мөн төсөлд ямар ч байдлаар нөлөөлөхгүй, тэдгээрийн эх код дахь цорын ганц зүйл нь файлд байдаг packages/manifest.json.

Unity багц менежер
Төслийн файлын систем дэх багцууд

Багцын эх сурвалжууд

UPM нь хэд хэдэн багцын эх сурвалжийг ашиглаж болно:

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

Нөхцөл:

  • Хэрэгжүүлэх хурд.
  • Гуравдагч талын хэрэгсэл шаарддаггүй.

Нөхцөл байдал:

  • Хувилбар гаргахад бэрхшээлтэй.
  • Файлын системд хуваалцсан хандалт нь төсөлтэй ажиллаж байгаа бүх хүмүүст шаардлагатай.

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

Нөхцөл:

  • Танд хэрэгтэй зүйл бол Git репозитор юм.

Нөхцөл байдал:

  • Та UPM цонхоор хувилбар хооронд шилжих боломжгүй.
  • Бүх Git репозитортой ажиллахгүй.

3. npm хадгалах газар.

Нөхцөл:

  • UPM функцийг бүрэн дэмждэг бөгөөд албан ёсны Unity багцуудыг түгээхэд ашигладаг.

Нөхцөл байдал:

  • Одоогоор "-preview"-ээс бусад багцын бүх мөр хувилбарыг үл тоомсорлож байна.

Доор бид UPM + npm хэрэгжилтийг авч үзэх болно. Энэ багц нь танд ямар ч төрлийн нөөцтэй ажиллах, багцын хувилбаруудыг удирдах боломжийг олгодог бөгөөд мөн UPM-ийн үндсэн интерфейсийг бүрэн дэмждэг тул тохиромжтой.

Та үүнийг npm репозитор болгон ашиглаж болно Вердаччо. Нарийвчилсан байдаг баримт бичиг, мөн үүнийг ажиллуулахын тулд хэдхэн тушаал шаардлагатай.

Байгаль орчныг тохируулах

Эхлээд та суулгах хэрэгтэй 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 багц менежерээр дамжуулан багцуудыг суулгаж, шинэчилж байна

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

сэтгэгдэл нэмэх