انجمن تخصّصی کانستراکت

نسخه‌ی کامل: فوت کوزه گری! | UID ها
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام بر همگی!
چند وقت پیش که در یک گیم جم شرکت کرده بودم و سورس کد ها رو میدیدم متوجه شدم که کسانی که با کانستراکت بازی ساختن برای اینکه بگن فلان ابجکت مخصوص این ابکجته(به طور مثال ای قلب مال این پلیر شماره ۱ اهه و نه شماره ۲)چندین خط کد زدن یا یک صفحه جدا نوشتن و لینک کردن به ایونت شیت اصلی.یکی از چیز هایی که میشه استفاده کرد و اکثر بازی سازان استفاده نمی کنن ID و UID ابجکت هاست

ID چیست؟
ایدی از لحاظ کلمه ای مخفف کلمه ی خاصی نیست.اسمه واسه خودش ولی معمولا مخفف IDenifier یا مشخص کننده میزارنش
ایدی اسمش روشه ((مشخص کننده)).ایدی هر ابجکت به کد میگه که این ابجکت روی صفحه ای مشخصات رو داره و با اون یکی دیگه که روی صفحست فرق داره.مثلا با دکمه ی دیگه ای حرکت میکنه.
معمولا ایدی هر ابجکت توی نوار پراپرتیز همون ابجکت(نوار سمت چپ)نشان داده میشه که قابل تغییر نیست و فقط کپی میشه.در کانستراکت اگر مثلا ۱۰ تا قلب توی یک لی اوت باشه و پلیر به یکی شون برخورد کنه و گفته باشیم اگ پلیر با قلب برخورد کرد قلب بره بالا سر پلیر،اون قلبی میره بالا سر پلیر که ID ایش 0 باشه.اگر این قلب نابود بشه اون قلبه که ایدیش 1 بود حالا میشه 0 و به ترتیب 2 میشه 1 ، 3 میشه 2 و...،

نکاتی درباب ID
  1. ایدی ها در زبان های برنامه نویسی نقش مهمی در تشکیل GUI دارند
  2. ایدی ها همیشه از 0 شروع می شوند،ان ابجکتی که اول از همه گذاشته شده ، 0 است
3.ایدی تنها عدد نیست گاهی ایدی ها کلمه هم میشوند(در           کانستراکت نه فقط در زبان های برنامه نویسی

استفاده از ID در کد
از ایدی در ایونت های کانستراکت نمیشه استفاده کرد حتی امکان اختصاص یک متغیر به ایدی یک ابجکت از طریق کد هم نیست ولی داداشش UID این اجازه رو بهمون میده

UID چیست؟
UID یا Unique ID به فارسی ID خاص هست.ایدی خاص مشخصات کامل ID رو داره ولی با تفاوت اینکه ایدی خاص قابل استفاده هست.یعنی در کد بازی مون می تونیم مقدار یک متغیر رو به UID یک ابجکت اختصاص بدیم و اون رو مقایسه کنیم و با قابلیت Pick by UID که هر ابجکت داره میشه کاری کرد که اگر مثلا ۱۰ تا قلب توی لول هست حتما اون قلبی که پلیر بهش برخورد کرده بره بالا سر پلیر وایسته نه اونی که ID ایش 0 باشه

پروژه اموزشی
فعلا کامپیوترم در دسترس نیست.فعلا این یکی رو داشته باید تا فردا یک پروژه بهتر آپلود کنم

امیدوارم لذت برده باشید و چیزی تازه یاد گرفته باشید.معقوله ID و UID بسیار آسان هست و کار با اون اسونتر سعی میکنم هر چند وقت یک بار مطالبی مثل این رو بزارم تا همه با "فوت های کوزه گری"کانستراکت آشنا بشن
باتشکر 54
 
سلام
عید غدیر مبارک

ممنون بابت این مطلب، اما اگه درست خاطرم باشه، این موضوع توی انجمن سیرا بحث شده بود و Ashley گفته بود که امکان داره بصورت تصادفی uid و id یک آبجکت، بعد از بین رفتن اون آبجکت، دوباره به آبجکت دیگه ای نسبت داده بشه. لذا بهترین پیشنهاد خود اشلی، این بود که از Instance Variable ها استفاده بشه.

بازم میتونین تحقیق کنین البته.منم دقیق خاطرم نیست. 17
این جواب اشلی هست:


UIDs only change in the editor. So if you hard-code an event that says "pick object with UID 5", and do some stuff in the editor, that event might later refer to a different object. 

البته اینم گفته که راه حلی بر موضوع اول باشه(اونم در شرایطی):

UIDs however are always unique to an object at runtime. So if you retrieve an object's UID and store it in an instance variable, for example, it will always refer to that object.
(1397/6/8، 12:47 عصر)mostafanastary نوشته است: [ -> ]سلام
عید غدیر مبارک

ممنون بابت این مطلب، اما اگه درست خاطرم باشه، این موضوع توی انجمن سیرا بحث شده بود و Ashley گفته بود که امکان داره بصورت تصادفی uid و id یک آبجکت، بعد از بین رفتن اون آبجکت، دوباره به آبجکت دیگه ای نسبت داده بشه. لذا بهترین پیشنهاد خود اشلی، این بود که از Instance Variable ها استفاده بشه.

بازم میتونین تحقیق کنین البته.منم دقیق خاطرم نیست. 17

سلام 
عید شما هم مبارک
درسته اون مطلب رو خوندم.ولی میشه با یک سری ایونت ساده مشکل رو برطرف کرد.بهترین کار اینه که با یک عدد دستی Pick by UID انجام ندیم و بعد از از بین رفتن یک ابجکت اون متغیر رو به صفر برگردونیم.و حتما بازی رو براساس استفاده از UID استاندارد سازی کنیم.به نظر سخت میاد ولی در اصل اصلا سخت نیست.امروز سورس آموزشی رو بروز می کنم و یه دونه بهتر رو آپلود میکنم.