Unity փաթեթի կառավարիչ

Unity-ն հարթակ է, որը գոյություն ունի բավականին երկար ժամանակ և անընդհատ զարգանում է: Այնուամենայնիվ, միաժամանակ մի քանի նախագծերի հետ աշխատելիս, դուք դեռ կարող եք դժվարությունների հանդիպել ընդհանուր աղբյուրների (.cs), գրադարանների (.dll) և այլ ակտիվների (պատկերներ, ձայներ, մոդելներ, նախապատկերներ) օգտագործելու հարցում: Այս հոդվածում մենք կխոսենք Unity-ի համար նման խնդրի հայրենական լուծման մեր փորձի մասին:

Unity փաթեթի կառավարիչ

Համատեղ ռեսուրսների բաշխման մեթոդներ

Տարբեր նախագծերի համար ընդհանուր ռեսուրսներն օգտագործելու մեկից ավելի եղանակ կա, բայց յուրաքանչյուր մոտեցում ունի իր դրական և բացասական կողմերը:

1. Կրկնօրինակում - մենք նախագծերի միջև ռեսուրսները կրկնօրինակում ենք «ձեռքով»:

Կոալիցիայում:

  • Հարմար է բոլոր տեսակի ռեսուրսների համար:
  • Կախվածության հետ կապված խնդիրներ չկան:
  • Ակտիվների GUID-ների հետ կապված խնդիրներ չկան:

Դեմ:

  • Հսկայական պահեստներ.
  • Տարբերակման հնարավորություն չկա։
  • Համօգտագործվող ռեսուրսների փոփոխություններին հետևելու դժվարություն:
  • Համատեղ ռեսուրսների թարմացման դժվարություն:

2. Git ենթամոդուլներ - ընդհանուր ռեսուրսների բաշխում արտաքին ենթամոդուլների միջոցով:

Կոալիցիայում:

  • Դուք կարող եք աշխատել աղբյուրների հետ:
  • Դուք կարող եք բաշխել ակտիվները:
  • Կախվածության հետ կապված խնդիրներ չկան:

Դեմ:

  • Git-ի փորձը պարտադիր է:
  • Git-ը այնքան էլ բարեկամական չէ երկուական ֆայլերի հետ. դուք ստիպված կլինեք միացնել LFS-ը:
  • Պահեստների մուտքի վերահսկում:
  • Տարբերակների արդիականացման և իջեցման հետ կապված դժվարություններ:
  • GUID-ի բախումները հնարավոր են, և Unity-ի կողմից դրանք լուծելու հստակ վարքագիծ չկա:

3. NuGet - ընդհանուր գրադարանների բաշխում NuGet փաթեթների միջոցով:

Կոալիցիայում:

  • Հարմար աշխատանք նախագծերի հետ, որոնք կախված չեն Unity-ից:
  • Հարմարավետ տարբերակավորում և կախվածության լուծում:

Դեմ:

  • Unity-ն չի կարող աշխատել NuGet փաթեթների հետ առանց տուփի (GitHub-ում կարող եք գտնել NuGet փաթեթների կառավարիչ Unity-ի համար, որն ուղղում է դա, բայց կան որոշ նրբերանգներ):
  • Այլ տեսակի ակտիվների բաշխման դժվարություններ:

4. Unity Package Manager - համատեղ ռեսուրսների բաշխում Unity-ի համար տեղական լուծման միջոցով:

Կոալիցիայում:

  • Բնական ինտերֆեյս փաթեթների հետ աշխատելու համար:
  • Պաշտպանություն GUID-ի հակասությունների պատճառով փաթեթներում .meta ֆայլերի վերագրումից:
  • Տարբերակման հնարավորություն։
  • Միասնության համար բոլոր տեսակի ռեսուրսները բաշխելու ունակություն:

Դեմ:

  • 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 պաշտոնական փաթեթները տարածելու համար:

Դեմ:

  • Ներկայումս անտեսում է փաթեթների բոլոր լարային տարբերակները, բացառությամբ «-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-ն և ստեղծեք .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 և բացեք Package Manager պատուհանը (մաքսային փաթեթների հետ աշխատելը ոչնչով չի տարբերվում ներկառուցվածների հետ աշխատելուց):
  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-ում ընդհանուր ռեսուրսների բաշխման նոր լուծում է, որը կարող է արժանի այլընտրանք լինել գոյություն ունեցող մեթոդներին: Հոդվածում նկարագրված առաջարկությունները հիմնված էին իրական դեպքերի վրա: Հուսով ենք, որ դրանք օգտակար կլինեն:

Source: www.habr.com

Добавить комментарий