యూనిటీ ప్యాకేజీ మేనేజర్

ఐక్యత అనేది చాలా కాలంగా ఉన్న మరియు నిరంతరం అభివృద్ధి చెందుతున్న వేదిక. అయితే, ఒకే సమయంలో అనేక ప్రాజెక్ట్‌లతో దీనిలో పని చేస్తున్నప్పుడు, మీరు సాధారణ మూలాధారాలు (.cs), లైబ్రరీలు (.dll) మరియు ఇతర ఆస్తులను (చిత్రాలు, శబ్దాలు, నమూనాలు, ప్రిఫ్యాబ్‌లు) ఉపయోగించడంలో ఇప్పటికీ ఇబ్బందులను ఎదుర్కోవచ్చు. ఈ వ్యాసంలో ఐక్యత కోసం అటువంటి సమస్యకు స్థానిక పరిష్కారంతో మా అనుభవం గురించి మాట్లాడుతాము.

యూనిటీ ప్యాకేజీ మేనేజర్

షేర్డ్ రిసోర్స్ డిస్ట్రిబ్యూషన్ మెథడ్స్

విభిన్న ప్రాజెక్ట్‌ల కోసం భాగస్వామ్య వనరులను ఉపయోగించడానికి ఒకటి కంటే ఎక్కువ మార్గాలు ఉన్నాయి, కానీ ప్రతి విధానం దాని లాభాలు మరియు నష్టాలను కలిగి ఉంటుంది.

1. డూప్లికేషన్ - మేము ప్రాజెక్ట్‌ల మధ్య వనరులను “చేతితో” నకిలీ చేస్తాము.

ప్రోస్:

  • అన్ని రకాల వనరులకు అనుకూలం.
  • డిపెండెన్సీ సమస్యలు లేవు.
  • ఆస్తి GUIDలతో సమస్యలు లేవు.

కాన్స్:

  • జెయింట్ రిపోజిటరీలు.
  • సంస్కరణకు అవకాశం లేదు.
  • భాగస్వామ్య వనరులకు మార్పులను ట్రాక్ చేయడం కష్టం.
  • భాగస్వామ్య వనరులను నవీకరించడంలో ఇబ్బంది.

2. Git సబ్‌మాడ్యూల్స్ - బాహ్య సబ్‌మాడ్యూల్స్ ద్వారా భాగస్వామ్య వనరుల పంపిణీ.

ప్రోస్:

  • మీరు మూలాలతో పని చేయవచ్చు.
  • మీరు ఆస్తులను పంపిణీ చేయవచ్చు.
  • డిపెండెన్సీ సమస్యలు లేవు.

కాన్స్:

  • Git అనుభవం అవసరం.
  • Git బైనరీ ఫైల్‌లతో చాలా స్నేహపూర్వకంగా లేదు - మీరు LFSని కనెక్ట్ చేయాలి.
  • రిపోజిటరీల కోసం యాక్సెస్ నియంత్రణ.
  • సంస్కరణలను అప్‌గ్రేడ్ చేయడం మరియు డౌన్‌గ్రేడ్ చేయడంలో ఇబ్బంది.
  • GUID ఘర్షణలు సాధ్యమే మరియు వాటిని పరిష్కరించడానికి యూనిటీ వైపు స్పష్టమైన ప్రవర్తన లేదు.

3. NuGet - NuGet ప్యాకేజీల ద్వారా షేర్డ్ లైబ్రరీల పంపిణీ.

ప్రోస్:

  • యూనిటీపై ఆధారపడని ప్రాజెక్టులతో అనుకూలమైన పని.
  • అనుకూలమైన సంస్కరణ మరియు డిపెండెన్సీ రిజల్యూషన్.

కాన్స్:

  • Unity NuGet ప్యాకేజీలతో పని చేయదు (GitHubలో మీరు యూనిటీ కోసం NuGet ప్యాకేజీ మేనేజర్‌ని కనుగొనవచ్చు, ఇది దీన్ని పరిష్కరిస్తుంది, కానీ కొన్ని సూక్ష్మ నైపుణ్యాలు ఉన్నాయి).
  • ఇతర రకాల ఆస్తులను పంపిణీ చేయడంలో ఇబ్బందులు.

4. యూనిటీ ప్యాకేజీ మేనేజర్ - యూనిటీ కోసం స్థానిక పరిష్కారం ద్వారా భాగస్వామ్య వనరుల పంపిణీ.

ప్రోస్:

  • ప్యాకేజీలతో పని చేయడానికి స్థానిక ఇంటర్‌ఫేస్.
  • GUID వైరుధ్యాల కారణంగా ప్యాకేజీలలో .meta ఫైల్‌లను ఓవర్‌రైట్ చేయకుండా రక్షణ.
  • సంస్కరణ యొక్క అవకాశం.
  • ఐక్యత కోసం అన్ని రకాల వనరులను పంపిణీ చేయగల సామర్థ్యం.

కాన్స్:

  • GUID వైరుధ్యాలు ఇప్పటికీ సంభవించవచ్చు.
  • అమలుకు ఎలాంటి డాక్యుమెంటేషన్ లేదు.

తరువాతి పద్ధతి ప్రతికూలతల కంటే ఎక్కువ ప్రయోజనాలను కలిగి ఉంది. అయినప్పటికీ, డాక్యుమెంటేషన్ లేకపోవడం వల్ల ఇది ఇప్పుడు బాగా ప్రాచుర్యం పొందలేదు మరియు అందువల్ల మేము దానిపై వివరంగా నివసిస్తాము.

యూనిటీ ప్యాకేజీ మేనేజర్

యూనిటీ ప్యాకేజీ మేనేజర్ (UPM) అనేది ఒక ప్యాకేజీ నిర్వహణ సాధనం. ఇది యూనిటీ 2018.1లో జోడించబడింది మరియు యూనిటీ టెక్నాలజీస్ అభివృద్ధి చేసిన ప్యాకేజీల కోసం మాత్రమే ఉపయోగించబడుతుంది. అయితే, వెర్షన్ 2018.3తో ప్రారంభించి, అనుకూల ప్యాకేజీలను జోడించడం సాధ్యమైంది.

యూనిటీ ప్యాకేజీ మేనేజర్
యూనిటీ ప్యాకేజీ మేనేజర్ ఇంటర్‌ఫేస్

ప్యాకేజీలు ప్రాజెక్ట్ మూలాలలో ముగియవు (ఆస్తుల డైరెక్టరీ). అవి ప్రత్యేక డైరెక్టరీలో ఉన్నాయి %projectFolder%/Library/PackageCache మరియు ప్రాజెక్ట్‌ను ఏ విధంగానూ ప్రభావితం చేయవద్దు, సోర్స్ కోడ్‌లో వారి ప్రస్తావన ఫైల్‌లో మాత్రమే ఉంటుంది packages/manifest.json.

యూనిటీ ప్యాకేజీ మేనేజర్
ప్రాజెక్ట్ ఫైల్ సిస్టమ్‌లోని ప్యాకేజీలు

ప్యాకేజీ మూలాలు

UPM అనేక ప్యాకేజీ మూలాలను ఉపయోగించవచ్చు:

1. ఫైల్ సిస్టమ్.

ప్రోస్:

  • అమలు వేగం.
  • మూడవ పార్టీ సాధనాలు అవసరం లేదు.

కాన్స్:

  • సంస్కరణలో ఇబ్బంది.
  • ప్రాజెక్ట్‌తో పనిచేసే ప్రతి ఒక్కరికీ ఫైల్ సిస్టమ్‌కు షేర్డ్ యాక్సెస్ అవసరం.

2. Git రిపోజిటరీ.

ప్రోస్:

  • మీకు కావలసిందల్లా ఒక Git రిపోజిటరీ.

కాన్స్:

  • మీరు UPM విండో ద్వారా సంస్కరణల మధ్య మారలేరు.
  • అన్ని Git రిపోజిటరీలతో పని చేయదు.

3. npm రిపోజిటరీ.

ప్రోస్:

  • UPM కార్యాచరణకు పూర్తిగా మద్దతు ఇస్తుంది మరియు అధికారిక యూనిటీ ప్యాకేజీలను పంపిణీ చేయడానికి ఉపయోగించబడుతుంది.

కాన్స్:

  • ప్రస్తుతం "-ప్రివ్యూ" మినహా ప్యాకేజీల యొక్క అన్ని స్ట్రింగ్ వెర్షన్‌లను విస్మరిస్తుంది.

క్రింద మేము UPM + npm అమలును పరిశీలిస్తాము. ఈ బండిల్ సౌకర్యవంతంగా ఉంటుంది ఎందుకంటే ఇది ఏ రకమైన వనరుతోనైనా పని చేయడానికి మరియు ప్యాకేజీ సంస్కరణలను నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు స్థానిక UPM ఇంటర్‌ఫేస్‌కు పూర్తిగా మద్దతు ఇస్తుంది.

మీరు దీన్ని npm రిపోజిటరీగా ఉపయోగించవచ్చు వెర్డాక్సియో. వివరంగా ఉంది డాక్యుమెంటేషన్, మరియు దీన్ని అమలు చేయడానికి కేవలం రెండు ఆదేశాలు మాత్రమే అవసరం.

పర్యావరణాన్ని ఏర్పాటు చేయడం

మొదటి మీరు ఇన్స్టాల్ చేయాలి node.js.

ప్యాకేజీని సృష్టిస్తోంది

ప్యాకేజీని సృష్టించడానికి, మీరు ఫైల్‌ను ఉంచాలి package.json, ఇది ఈ ప్యాకేజీలోని విషయాలతో కూడిన డైరెక్టరీకి దానిని వివరిస్తుంది. మీరు ఈ క్రింది వాటిని చేయాలి:

మేము ప్యాకేజీని తయారు చేయాలనుకుంటున్న ప్రాజెక్ట్ డైరెక్టరీకి వెళ్లండి.

npm init ఆదేశాన్ని అమలు చేయండి మరియు డైలాగ్ సమయంలో అవసరమైన విలువలను నమోదు చేయండి. పేరు కోసం, రివర్స్ డొమైన్ ఆకృతిలో పేరును పేర్కొనండి, ఉదాహరణకు com.plarium.somepackage.
ప్యాకేజీ పేరును సౌకర్యవంతంగా ప్రదర్శించడానికి, displayName ప్రాపర్టీని package.jsonకి జోడించి, దాన్ని పూరించండి.

npm js-ఆధారితమైనది కాబట్టి, ఫైల్ మనకు అవసరం లేని ప్రధాన మరియు స్క్రిప్ట్‌ల లక్షణాలను కలిగి ఉంది, వీటిని యూనిటీ ఉపయోగించదు. ప్యాకేజీ వివరణను అస్తవ్యస్తం చేయకుండా వాటిని తీసివేయడం మంచిది. ఫైల్ ఇలా ఉండాలి:

  1. మేము ప్యాకేజీని తయారు చేయాలనుకుంటున్న ప్రాజెక్ట్ డైరెక్టరీకి వెళ్లండి.
  2. npm init ఆదేశాన్ని అమలు చేయండి మరియు డైలాగ్ సమయంలో అవసరమైన విలువలను నమోదు చేయండి. పేరు కోసం, రివర్స్ డొమైన్ ఆకృతిలో పేరును పేర్కొనండి, ఉదాహరణకు com.plarium.somepackage.
  3. ప్యాకేజీ పేరును సౌకర్యవంతంగా ప్రదర్శించడానికి, displayName ప్రాపర్టీని package.jsonకి జోడించి, దాన్ని పూరించండి.
  4. npm js-ఆధారితమైనది కాబట్టి, ఫైల్ మనకు అవసరం లేని ప్రధాన మరియు స్క్రిప్ట్‌ల లక్షణాలను కలిగి ఉంది, వీటిని యూనిటీ ఉపయోగించదు. ప్యాకేజీ వివరణను అస్తవ్యస్తం చేయకుండా వాటిని తీసివేయడం మంచిది. ఫైల్ ఇలా ఉండాలి:
    {
     "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 ఫైల్‌ను రూపొందించండి (యూనిటీకి .meta ఫైల్‌లు లేకుండా ఆస్తులు కనిపించవు, Unity కోసం ప్యాకేజీలు చదవడానికి మాత్రమే తెరవబడతాయి).

ప్యాకేజీని పంపుతోంది

ప్యాకేజీని పంపడానికి మీరు ఆదేశాన్ని అమలు చేయాలి: 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తో ఆస్తులను కలిగి ఉన్నాయని కనుగొనబడితే, దిగుమతి చేసుకున్న ప్యాకేజీ నుండి సరిపోలే GUIDలు ఉన్న ఆస్తులు ప్రాజెక్ట్‌కి జోడించబడవు.
  2. ప్యాకేజీ అనేది ఒక ప్రాజెక్ట్. ఒకవేళ, ప్యాకేజీని దిగుమతి చేస్తున్నప్పుడు, ప్రాజెక్ట్ సరిపోలే GUIDలతో ఆస్తులను కలిగి ఉన్నట్లు కనుగొనబడితే, అప్పుడు ప్యాకేజీలోని ఆస్తులు ప్రాజెక్ట్‌కి జోడించబడవు. అయితే, వాటిపై ఆధారపడిన ఆస్తులు ప్రాజెక్ట్ నుండి ఆస్తులను ఉపయోగించడం ప్రారంభిస్తాయి.

ప్రాజెక్ట్ నుండి ప్యాకేజీకి ఆస్తులను బదిలీ చేయడం

యూనిటీ తెరిచి ఉన్నప్పుడు మీరు ఒక ప్రాజెక్ట్ నుండి ఒక ఆస్తిని ప్యాకేజీకి బదిలీ చేస్తే, దాని కార్యాచరణ భద్రపరచబడుతుంది మరియు ఆధారిత ఆస్తులలోని లింక్‌లు ప్యాకేజీ నుండి ఆస్తిని ఉపయోగించడం ప్రారంభిస్తాయి.

ముఖ్యమైన: ప్రాజెక్ట్ నుండి ప్యాకేజీకి ఆస్తిని కాపీ చేస్తున్నప్పుడు, ఎగువ విభాగంలో వివరించిన “ప్యాకేజీ - ప్రాజెక్ట్” వైరుధ్యం ఏర్పడుతుంది.

వివాదాలకు సాధ్యమైన పరిష్కారాలు

  1. ఘర్షణలను తొలగించడానికి అన్ని ఆస్తులను దిగుమతి చేసేటప్పుడు మా స్వంత అల్గారిథమ్‌లను ఉపయోగించి GUIDలను మళ్లీ కేటాయించడం.
  2. అన్ని ఆస్తులను ఒక ప్రాజెక్ట్‌కి జోడించి, ఆపై వాటిని ప్యాకేజీలుగా విభజించడం.
  3. అన్ని ఆస్తుల యొక్క GUIDలను కలిగి ఉన్న డేటాబేస్ను సృష్టించడం మరియు ప్యాకేజీలను పంపేటప్పుడు ధ్రువీకరణను నిర్వహించడం.

తీర్మానం

యూనిటీలో భాగస్వామ్య వనరులను పంపిణీ చేయడానికి UPM ఒక కొత్త పరిష్కారం, ఇది ఇప్పటికే ఉన్న పద్ధతులకు విలువైన ప్రత్యామ్నాయం. వ్యాసంలో వివరించిన సిఫార్సులు నిజమైన కేసులపై ఆధారపడి ఉన్నాయి. మీరు వాటిని ఉపయోగకరంగా భావిస్తున్నారని మేము ఆశిస్తున్నాము.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి