یونٹی پیکیج مینیجر

اتحاد ایک ایسا پلیٹ فارم ہے جو ایک طویل عرصے سے موجود ہے اور مسلسل ترقی کر رہا ہے۔ تاہم، ایک ہی وقت میں کئی پروجیکٹس کے ساتھ کام کرتے وقت، آپ کو عام ذرائع (.cs)، لائبریریز (.dll) اور دیگر اثاثے (تصاویر، آوازیں، ماڈل، پریفاب) استعمال کرنے میں اب بھی مشکلات کا سامنا کرنا پڑ سکتا ہے۔ اس مضمون میں، ہم اتحاد کے لیے اس طرح کے مسئلے کے مقامی حل کے ساتھ اپنے تجربے کے بارے میں بات کریں گے۔

یونٹی پیکیج مینیجر

مشترکہ وسائل کی تقسیم کے طریقے

مختلف منصوبوں کے لیے مشترکہ وسائل کو استعمال کرنے کے ایک سے زیادہ طریقے ہیں، لیکن ہر نقطہ نظر کے اپنے فوائد اور نقصانات ہیں۔

1. نقل - "ہاتھ سے" ہم منصوبوں کے درمیان وسائل کی نقل تیار کرتے ہیں۔

پیشہ:

  • ہر قسم کے وسائل کے لیے موزوں۔
  • انحصار کا کوئی مسئلہ نہیں۔
  • اثاثہ GUIDs کے ساتھ کوئی مسئلہ نہیں ہے۔

Cons:

  • وشال ذخیرہ۔
  • ورژن بنانے کا کوئی آپشن نہیں ہے۔
  • مشترکہ وسائل میں تبدیلیوں سے باخبر رہنے میں دشواری۔
  • مشترکہ وسائل کو اپ ڈیٹ کرنے میں دشواری۔

2. گٹ سب ماڈیولز - بیرونی ذیلی ماڈلز کے ذریعے مشترکہ وسائل کی تقسیم۔

پیشہ:

  • آپ ذرائع کے ساتھ کام کر سکتے ہیں۔
  • آپ اثاثے تقسیم کر سکتے ہیں۔
  • انحصار کا کوئی مسئلہ نہیں۔

Cons:

  • گٹ کی مہارت درکار ہے۔
  • گٹ بائنری فائلوں کے ساتھ زیادہ دوستانہ نہیں ہے - آپ کو LFS شامل کرنا ہوگا۔
  • ذخیروں کے لیے رسائی کا کنٹرول۔
  • اپ گریڈ کرنے اور نیچے کرنے میں دشواری۔
  • GUID کے تصادم ممکن ہیں اور اتحاد کی جانب سے ان کو حل کرنے کے لیے کوئی غیر مبہم رویہ نہیں ہے۔

3. نیو گیٹ - نیو گیٹ پیکجز کے ذریعے مشترکہ لائبریریوں کی تقسیم۔

پیشہ:

  • ان منصوبوں کے ساتھ آسان کام جو اتحاد پر منحصر نہیں ہیں۔
  • آسان ورژن اور انحصار کا حل۔

Cons:

  • یونٹی یہ نہیں جانتی کہ نیو گیٹ پیکجز کے ساتھ کیسے کام کرنا ہے (آپ گٹ ہب پر یونیٹی کے لیے نیو گیٹ پیکیج مینیجر کو تلاش کر سکتے ہیں، جو اسے ٹھیک کرتا ہے، لیکن اس میں باریکیاں بھی ہیں)۔
  • دیگر اقسام کے اثاثوں کی تقسیم میں مشکلات۔

4. یونٹی پیکیج مینیجر - اتحاد کے مقامی حل کے ذریعے مشترکہ وسائل کی تقسیم۔

پیشہ:

  • پیکجوں کے ساتھ کام کرنے کے لیے مقامی انٹرفیس۔
  • GUID تنازعات کی صورت میں پیکجوں میں .meta فائلوں کو اوور رائٹ کرنے کے خلاف تحفظ۔
  • ورژن سازی کی صلاحیت۔
  • اتحاد کے لیے ہر قسم کے وسائل کی تقسیم کی صلاحیت۔

Cons:

  • GUID تنازعات اب بھی ہو سکتے ہیں۔
  • عمل درآمد کے لیے کوئی دستاویز نہیں ہے۔

مؤخر الذکر طریقہ کے نقصانات سے زیادہ فوائد ہیں۔ تاہم، دستاویزات کی کمی کی وجہ سے یہ اب زیادہ مقبول نہیں ہے، اور اس وجہ سے ہم اس پر تفصیل سے غور کریں گے۔

یونٹی پیکیج مینیجر

یونٹی پیکیج مینیجر (اس کے بعد UPM کہا جاتا ہے) ایک پیکیج مینجمنٹ ٹول ہے۔ اسے یونٹی 2018.1 میں شامل کیا گیا تھا اور اسے صرف یونٹی ٹیکنالوجیز کے تیار کردہ پیکیجز کے لیے استعمال کیا گیا تھا۔ تاہم، ورژن 2018.3 سے شروع کرتے ہوئے، اپنی مرضی کے پیکجز کو شامل کرنا ممکن ہو گیا۔

یونٹی پیکیج مینیجر
یونٹی پیکیج مینیجر انٹرفیس

پیکیجز پروجیکٹ کے ذرائع (اثاثوں کی ڈائرکٹری) میں ختم نہیں ہوتے ہیں۔ وہ ایک علیحدہ ڈائریکٹری میں ہیں۔ %projectFolder%/Library/PackageCache اور پروجیکٹ کو کسی بھی طرح متاثر نہ کریں، سورس کوڈ میں ان کا صرف ذکر فائل میں ہے۔ packages/manifest.json.

یونٹی پیکیج مینیجر
پروجیکٹ فائل سسٹم میں پیکجز

پیکیج کے ذرائع

UPM پیکیج کے کئی ذرائع استعمال کر سکتا ہے:

1. فائل سسٹم۔

پیشہ:

  • عمل درآمد کی رفتار۔
  • کسی تھرڈ پارٹی ٹولز کی ضرورت نہیں ہے۔

Cons:

  • ورژن کی پیچیدگی
  • فائل سسٹم تک مشترکہ رسائی ہر اس شخص کے لیے ضروری ہے جو پروجیکٹ کے ساتھ کام کرتا ہے۔

2. گٹ ریپوزٹری۔

پیشہ:

  • آپ کو صرف ایک گٹ ریپوزٹری کی ضرورت ہے۔

Cons:

  • آپ UPM ونڈو کے ذریعے ورژن کے درمیان سوئچ نہیں کر سکتے ہیں۔
  • تمام Git ذخیروں کے ساتھ کام نہیں کرتا ہے۔

3. npm ذخیرہ۔

پیشہ:

  • UPM فعالیت کو مکمل طور پر سپورٹ کرتا ہے اور اسے آفیشل یونٹی پیکجز کی تقسیم کے لیے استعمال کیا جاتا ہے۔

Cons:

  • فی الحال پیکجوں کے تمام سٹرنگ ورژنز کو نظر انداز کرتا ہے سوائے "-preview" کے۔

ہم ذیل میں 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 کھولیں اور package.json کے لیے ایک .meta فائل بنائیں (Unity .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 کے ساتھ اثاثے ہیں، تو پیکیج کے اثاثوں کو پروجیکٹ میں شامل نہیں کیا جائے گا۔ تاہم جو اثاثے ان پر منحصر ہوں گے وہ پراجیکٹ کے اثاثوں کا استعمال شروع کر دیں گے۔

اثاثوں کو پروجیکٹ سے پیکیج میں منتقل کرنا

اگر آپ Unity کے کھلے ہونے کے دوران کسی پروجیکٹ سے کسی اثاثے کو پیکج میں منتقل کرتے ہیں، تو اس کی فعالیت محفوظ رہے گی، اور انحصار شدہ اثاثوں کے لنکس پیکیج سے اثاثے کا استعمال شروع کر دیں گے۔

یہ ضروری ہے: کسی پروجیکٹ سے پیکج میں کسی اثاثے کی کاپی کرتے وقت، اوپر والے حصے میں بیان کردہ پیکیج-پروجیکٹ تنازعہ واقع ہوگا۔

تنازعات کے ممکنہ حل

  1. تصادم سے بچنے کے لیے تمام اثاثے درآمد کرتے وقت اپنے الگورتھم کے مطابق GUIDs کو دوبارہ تفویض کرنا۔
  2. تمام اثاثوں کو ایک پروجیکٹ میں شامل کرنا ان کے بعد کے پیکجوں میں علیحدگی کے ساتھ۔
  3. تمام اثاثوں کے GUIDs پر مشتمل ایک ڈیٹا بیس بنائیں اور پیکجز جمع کرواتے وقت تصدیق کریں۔

حاصل يہ ہوا

UPM اتحاد میں مشترکہ وسائل کی تقسیم کا ایک نیا حل ہے جو موجودہ طریقوں کا ایک قابل متبادل ہو سکتا ہے۔ مضمون میں بیان کردہ سفارشات حقیقی مقدمات کی بنیاد پر پیدا ہوئیں. ہم امید کرتے ہیں کہ آپ انہیں کارآمد پائیں گے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں