አንድነት ፓኬጅ አስተዳዳሪ

አንድነት ለረጅም ጊዜ የቆየ እና በየጊዜው እየተሻሻለ የመጣ መድረክ ነው። ነገር ግን፣ በውስጡ ከበርካታ ፕሮጀክቶች ጋር በተመሳሳይ ጊዜ ሲሰሩ፣ አሁንም የተለመዱ ምንጮችን (.cs)፣ ቤተ-መጻሕፍት (.dll) እና ሌሎች ንብረቶችን (ምስሎች፣ ድምጾች፣ ሞዴሎች፣ ቅድመ-ፋብሶች) ለመጠቀም ችግሮች ሊያጋጥሙዎት ይችላሉ። በዚህ ጽሑፍ ውስጥ ስለ አንድነት እንደዚህ ላለው ችግር ቤተኛ መፍትሄ ስለ ልምዳችን እንነጋገራለን ።

አንድነት ፓኬጅ አስተዳዳሪ

የጋራ መገልገያ ማከፋፈያ ዘዴዎች

ለተለያዩ ፕሮጄክቶች የጋራ ሀብቶችን ለመጠቀም ከአንድ በላይ መንገዶች አሉ ፣ ግን እያንዳንዱ አቀራረብ ጥቅሞቹ እና ጉዳቶች አሉት።

1. ማባዛት - በፕሮጀክቶች መካከል ሀብቶችን “በእጅ” እናባዛለን።

ምርቶች

  • ለሁሉም ዓይነት ሀብቶች ተስማሚ።
  • የጥገኝነት ችግሮች የሉም።
  • በንብረት GUIDs ላይ ምንም ችግሮች የሉም።

Cons:

  • ግዙፍ ማከማቻዎች።
  • ስሪት የማዘጋጀት እድል የለም።
  • በጋራ ሀብቶች ላይ የተደረጉ ለውጦችን የመከታተል ችግር።
  • የጋራ መገልገያዎችን ማዘመን ላይ ችግር።

2. Git ንዑስ ሞዱሎች - የጋራ ሀብቶችን በውጫዊ ንዑስ ሞጁሎች ማሰራጨት።

ምርቶች

  • ከምንጮቹ ጋር መስራት ይችላሉ.
  • ንብረቶችን ማሰራጨት ይችላሉ.
  • የጥገኝነት ችግሮች የሉም።

Cons:

  • የጂት ልምድ ያስፈልጋል።
  • Git ከሁለትዮሽ ፋይሎች ጋር በጣም ወዳጃዊ አይደለም - LFS ማገናኘት ይኖርብዎታል።
  • የመዳረሻ መቆጣጠሪያ ለማከማቻዎች.
  • ስሪቶችን በማሻሻል እና በማውረድ ላይ ችግር።
  • የGUID ግጭቶች ሊኖሩ ይችላሉ እና ለመፍታት በአንድነት በኩል ግልጽ የሆነ ባህሪ የለም።

3. ኑጌት - የጋራ ቤተ-መጻሕፍት በ NuGet ፓኬጆች ማከፋፈል።

ምርቶች

  • በአንድነት ላይ ያልተመሰረቱ ፕሮጀክቶች ጋር ምቹ ስራ.
  • ምቹ እትም እና ጥገኝነት መፍታት.

Cons:

  • አንድነት ከNuGet ፓኬጆች ጋር አብሮ መስራት አይችልም (GitHub ላይ የNuGet Package Manager for Unityን ማግኘት ይችላሉ፣ይህን ያስተካክላል፣ነገር ግን አንዳንድ ልዩነቶች አሉ።)
  • ሌሎች የንብረት ዓይነቶችን ለማሰራጨት ችግሮች።

4. የአንድነት ፓኬጅ ሥራ አስኪያጅ - የጋራ ሀብቶችን ለአንድነት ተወላጅ በሆነ መፍትሄ ማከፋፈል።

ምርቶች

  • ከጥቅሎች ጋር ለመስራት ቤተኛ በይነገጽ።
  • በGUID ግጭቶች ምክንያት በጥቅሎች ውስጥ የ.ሜታ ፋይሎችን ከመፃፍ መከላከል።
  • የመገልበጥ እድል.
  • ለአንድነት ሁሉንም አይነት ሀብቶች የማሰራጨት ችሎታ.

Cons:

  • የGUID ግጭቶች አሁንም ሊከሰቱ ይችላሉ።
  • ለትግበራ ምንም ሰነድ የለም.

የኋለኛው ዘዴ ከጉዳቶች የበለጠ ጥቅሞች አሉት ። ሆኖም ግን, በሰነዶች እጥረት ምክንያት አሁን በጣም ተወዳጅ አይደለም, እና ስለዚህ በዝርዝር እንኖራለን.

አንድነት ፓኬጅ አስተዳዳሪ

አንድነት ፓኬጅ አስተዳዳሪ (UPM) የጥቅል አስተዳደር መሣሪያ ነው። በዩኒቲ 2018.1 ውስጥ ተጨምሯል እና በዩኒቲ ቴክኖሎጂዎች ለተዘጋጁ ጥቅሎች ብቻ ጥቅም ላይ ውሏል። ነገር ግን፣ ከ2018.3 ስሪት ጀምሮ፣ ብጁ ፓኬጆችን ማከል ተችሏል።

አንድነት ፓኬጅ አስተዳዳሪ
የአንድነት ጥቅል አስተዳዳሪ በይነገጽ

ጥቅሎቹ በፕሮጀክት ምንጮች (የንብረቶች ማውጫ) ውስጥ አያበቁም. እነሱ በተለየ ማውጫ ውስጥ ናቸው %projectFolder%/Library/PackageCache እና በምንም መልኩ በፕሮጀክቱ ላይ ተጽእኖ አያድርጉ, በመነሻ ኮድ ውስጥ ብቸኛው መጠቀሳቸው በፋይሉ ውስጥ ነው packages/manifest.json.

አንድነት ፓኬጅ አስተዳዳሪ
በፕሮጀክት ፋይል ስርዓት ውስጥ ያሉ ጥቅሎች

የጥቅል ምንጮች

UPM በርካታ የጥቅል ምንጮችን መጠቀም ይችላል፡-

1. የፋይል ስርዓት.

ምርቶች

  • የትግበራ ፍጥነት.
  • የሶስተኛ ወገን መሳሪያዎችን አይፈልግም.

Cons:

  • ስሪት ለማውጣት አስቸጋሪነት.
  • ከፕሮጀክቱ ጋር ለሚሰሩ ሁሉ የፋይል ስርዓቱን የጋራ መዳረሻ ያስፈልጋል።

2. Git ማከማቻ.

ምርቶች

  • የሚያስፈልግህ የጂት ማከማቻ ነው።

Cons:

  • በ UPM መስኮት በኩል በስሪቶች መካከል መቀያየር አይችሉም።
  • ከሁሉም የጂት ማከማቻዎች ጋር አይሰራም።

3. npm ማከማቻ.

ምርቶች

  • የ UPM ተግባርን ሙሉ በሙሉ ይደግፋል እና ኦፊሴላዊ የአንድነት ፓኬጆችን ለማሰራጨት ይጠቅማል።

Cons:

  • በአሁኑ ጊዜ ከ"-ቅድመ እይታ" በስተቀር ሁሉንም የጥቅሎች ሕብረቁምፊ ስሪቶች ችላ ይላል።

ከዚህ በታች የ UPM + npm ትግበራን እንመለከታለን. ይህ ጥቅል ምቹ ነው ምክንያቱም ከማንኛውም አይነት ግብአት ጋር ለመስራት እና የጥቅል ስሪቶችን ለማስተዳደር እንዲሁም ቤተኛ የሆነውን UPM በይነገጽን ሙሉ በሙሉ ስለሚደግፍ ነው።

እንደ npm ማከማቻ ሊጠቀሙበት ይችላሉ። Verdaccio. ዝርዝር አለ ሰነድእና እሱን ለማስኬድ ሁለት ትዕዛዞች ብቻ ያስፈልጋሉ።

አካባቢን ማዘጋጀት

በመጀመሪያ መጫን ያስፈልግዎታል node.js.

ጥቅል መፍጠር

ጥቅል ለመፍጠር, ፋይሉን ማስቀመጥ ያስፈልግዎታል package.json, እሱም ይገልፃል, የዚህን ጥቅል ይዘት ወዳለው ማውጫ. የሚከተሉትን ማድረግ ያስፈልግዎታል:

ጥቅል ለመሥራት ወደምንፈልገው የፕሮጀክት ማውጫ ይሂዱ.

የ npm init ትዕዛዙን ያሂዱ እና በንግግሩ ጊዜ አስፈላጊዎቹን እሴቶች ያስገቡ። ለስም ፣ ስሙን በተቃራኒው የጎራ ቅርጸት ይጥቀሱ ፣ ለምሳሌ com.plarium.somepackage።
የጥቅል ስሙን በሚመች ሁኔታ ለማሳየት የማሳያ ስም ንብረቱን ወደ pack.json ያክሉ እና ይሙሉት።

npm js-oriented ስለሆነ ፋይሉ የማንፈልጋቸውን ዋና እና የስክሪፕት ባሕሪያትን ይዟል፣ አንድነት የማይጠቀምባቸውን። የጥቅል መግለጫውን ላለማሳሳት እነሱን ማስወገድ የተሻለ ነው. ፋይሉ እንደዚህ ያለ ነገር መምሰል አለበት፡-

  1. ጥቅል ለመሥራት ወደምንፈልገው የፕሮጀክት ማውጫ ይሂዱ.
  2. የ npm init ትዕዛዙን ያሂዱ እና በንግግሩ ጊዜ አስፈላጊዎቹን እሴቶች ያስገቡ። ለስም ፣ ስሙን በተቃራኒው የጎራ ቅርጸት ይጥቀሱ ፣ ለምሳሌ com.plarium.somepackage።
  3. የጥቅል ስሙን በሚመች ሁኔታ ለማሳየት የማሳያ ስም ንብረቱን ወደ pack.json ያክሉ እና ይሙሉት።
  4. npm js-oriented ስለሆነ ፋይሉ የማንፈልጋቸውን ዋና እና የስክሪፕት ባሕሪያትን ይዟል፣ አንድነት የማይጠቀምባቸውን። የጥቅል መግለጫውን ላለማሳሳት እነሱን ማስወገድ የተሻለ ነው. ፋይሉ እንደዚህ ያለ ነገር መምሰል አለበት፡-
    {
     "name": "com.plarium.somepackage",
     "displayName": "Some Package",
     "version": "1.0.0",
     "description": "Some Package Description",
     "keywords": [
       "Unity",
       "UPM"
     ],
     "author": "AUTHOR",
     "license": "UNLICENSED"
    }

  5. አንድነትን ይክፈቱ እና ለ pack.json የ.meta ፋይል ​​ያመነጫሉ (አንድነት ያለ .ሜታ ፋይሎችን አያይም፣ የአንድነት ፓኬጆች ተነባቢ-ብቻ ይከፈታሉ)።

ጥቅል በመላክ ላይ

ጥቅሉን ለመላክ ትዕዛዙን ማስኬድ ያስፈልግዎታል: npm publish --registry *адрес до хранилища пакетов*.

በአንድነት ጥቅል አስተዳዳሪ በኩል ፓኬጆችን መጫን እና ማዘመን

ወደ አንድነት ፕሮጀክት ጥቅል ለማከል፣ ያስፈልግዎታል፡-

  1. ወደ ፋይል ያክሉ manifest.json ስለ ጥቅሎቹ ምንጭ መረጃ. ይህንን ለማድረግ ንብረቱን መጨመር ያስፈልግዎታል scopedRegistries እና የተወሰኑ ወሰኖች የሚፈለጉበትን ወሰን እና የምንጭ አድራሻ ያመልክቱ።
    
    "scopedRegistries": [
       {
         "name": "Main",
         "url": "адрес до хранилища пакетов",
         "scopes": [
           "com.plarium"
         ]
       }
     ]
    
  2. ወደ አንድነት ይሂዱ እና የጥቅል አስተዳዳሪ መስኮቱን ይክፈቱ (ከተበጁ ፓኬጆች ጋር አብሮ መስራት አብሮ ከተሰራው ጋር ምንም ልዩነት የለውም).
  3. ሁሉንም ጥቅሎች ይምረጡ።
  4. የሚፈልጉትን ጥቅል ይፈልጉ እና ያክሉት።

አንድነት ፓኬጅ አስተዳዳሪ

ከምንጮች እና ማረም ጋር በመስራት ላይ

ምንጮቹ ከፕሮጀክቱ ጋር እንዲገናኙ, መፍጠር ያስፈልግዎታል የመሰብሰቢያ ትርጉም ለጥቅሉ.

ጥቅሎችን መጠቀም የማረም አማራጮችን አይገድበውም። ነገር ግን በዩኒቲ ውስጥ ከጥቅሎች ጋር ሲሰሩ ስህተቱ በጥቅሉ ውስጥ ከተከሰተ በኮንሶል ውስጥ ያለውን ስህተት ጠቅ በማድረግ ወደ IDE መሄድ አይችሉም። ይህ የሆነበት ምክንያት አንድነት ስክሪፕቶችን እንደ የተለየ ፋይል ስለማይመለከት ነው ፣ ምክንያቱም የመሰብሰቢያውን ትርጉም ሲጠቀሙ ወደ ቤተ-መጽሐፍት ተሰብስበው በፕሮጀክቱ ውስጥ ይካተታሉ። ከፕሮጀክት ምንጮች ጋር በሚሰሩበት ጊዜ, ወደ IDE ጠቅ ማድረግ ይቻላል.

የተገናኘ ጥቅል ባለው ፕሮጀክት ውስጥ ስክሪፕት፡-

አንድነት ፓኬጅ አስተዳዳሪ
ከጥቅሉ የተገኘ ስክሪፕት ከስራ መግቻ ነጥብ ጋር፡-

አንድነት ፓኬጅ አስተዳዳሪ

በጥቅሎች ላይ አስቸኳይ ጥገናዎች

በአንድ ፕሮጀክት ላይ የተጨመሩ የአንድነት ፓኬጆች ተነባቢ-ብቻ ናቸው፣ ነገር ግን በጥቅል መሸጎጫ ውስጥ ሊስተካከል ይችላል። ይህንን ለማድረግ የሚከተሉትን ያስፈልግዎታል:

  1. በጥቅል መሸጎጫ ውስጥ ወደ ጥቅል ይሂዱ.

    አንድነት ፓኬጅ አስተዳዳሪ

  2. አስፈላጊ ለውጦችን ያድርጉ.
  3. በፋይል ውስጥ ያለውን ስሪት ያዘምኑ package.json.
  4. ጥቅል ላክ npm publish --registry *адрес до хранилища пакетов*.
  5. የጥቅል ስሪቱን በ UPM በይነገጽ በኩል ወደ ተስተካከለው ያዘምኑ።

ጥቅል የማስመጣት ግጭቶች

ፓኬጆችን በሚያስገቡበት ጊዜ የሚከተሉት የGUID ግጭቶች ሊከሰቱ ይችላሉ፡

  1. ጥቅል - ጥቅል. ፓኬጅ በሚያስገቡበት ጊዜ ቀድሞ የተጨመሩ ፓኬጆች አንድ አይነት GUID ያላቸው ንብረቶች እንደያዙ ከታወቀ፣ ከውጭ ከመጣው ጥቅል ውስጥ GUIDs ያላቸው ተዛማጅ ንብረቶች ወደ ፕሮጀክቱ አይጨመሩም።
  2. ጥቅል ፕሮጀክት ነው። አንድ ጥቅል በሚያስገቡበት ጊዜ ፕሮጀክቱ ተዛማጅ GUIDs ያላቸው ንብረቶችን እንደያዘ ከታወቀ ከጥቅሉ ውስጥ ያሉት ንብረቶች በፕሮጀክቱ ውስጥ አይጨመሩም. ነገር ግን በእነሱ ላይ የሚመረኮዙ ንብረቶች ከፕሮጀክቱ የተገኙ ንብረቶችን መጠቀም ይጀምራሉ.

ንብረቶችን ከፕሮጀክት ወደ ጥቅል ማስተላለፍ

ዩኒቲ ክፍት ሆኖ ሳለ አንድን ንብረት ከፕሮጀክት ወደ ጥቅል ካስተላለፉት ተግባራቱ ተጠብቆ ይቆያል እና ጥገኛ በሆኑ ንብረቶች ላይ ያሉ ማገናኛዎች ንብረቱን ከጥቅሉ መጠቀም ይጀምራሉ።

ከፍተኛ: ከፕሮጀክት ወደ ጥቅል ንብረቱን ሲገለብጡ, ከላይ ባለው ክፍል ውስጥ የተገለጸው "ፓኬጅ - ፕሮጀክት" ግጭት ይከሰታል.

ለግጭቶች ሊሆኑ የሚችሉ መፍትሄዎች

  1. ግጭቶችን ለማስወገድ ሁሉንም ንብረቶች በሚያስገቡበት ጊዜ የራሳችንን ስልተ ቀመሮችን በመጠቀም GUIDዎችን እንደገና መመደብ።
  2. ሁሉንም ንብረቶች ወደ አንድ ፕሮጀክት ማከል እና ከዚያ ወደ ፓኬጆች መከፋፈል።
  3. የሁሉም ንብረቶች GUIDs የያዘ የውሂብ ጎታ መፍጠር እና ጥቅሎችን በሚልኩበት ጊዜ ማረጋገጫን ማካሄድ።

መደምደሚያ

UPM በዩኒቲ ውስጥ የጋራ ሀብቶችን ለማሰራጨት አዲስ መፍትሄ ነው ፣ ይህም ለነባር ዘዴዎች ብቁ አማራጭ ሊሆን ይችላል። በአንቀጹ ውስጥ የተገለጹት ምክሮች በእውነተኛ ጉዳዮች ላይ ተመስርተዋል. ጠቃሚ ሆነው እንደሚያገኟቸው ተስፋ እናደርጋለን።

ምንጭ: hab.com

አስተያየት ያክሉ