اشنایی با برنامه نویسی ادیتور در انجین یونیتی: قسمت اول

مقدمه: اشنایی با برنامه نویسی ادیتور در انجین یونیتی: مقدمهمقاله کمکی: اموزش attribute های Inspector در انجین یونیتیتوجه:این مقاله برای سطح متوسط به بالا نوشته شده و ممکنه برای افراد مبتدی یونیتی گیج کننده باشه.تو قسمت اول با مقدمات این بخش اشنا شدیم تو این قسمت با برنامه نویسی ادیتور شروع به کدنویسی میکنیم.این قسمت رو به شش بخش متفاوت تقسیم میکنم که خوندن و بررسی قسمت ها راحت تر بشهنمایش و ویرایش editor نمایش اجزای موجود در کد هانکاتی در نمایش اجزای موجود در کد هاافزودن اجزای جدید برای دسترسی و ویرایش کد هاکار با توابع و راه اندازی ان هانمایش editor windowدر این قسمت سه مورد اول رو بررسی و یاد میگیریم تو قسمت دوم سه گزینه بعدی رو با هم مرور میکنیم.به جز قسمت اول بقیه قسمت ها در editor و editor window یکسان هستند.مانند قبل برای خوانایی راحت تر متغییر ها از _ استفاده کردم.نمایش و ویرایش editor برای اینکه بتونیم مثالی برای این گزینه داشته باشیم لازمه که یک کد اماده از نوع monobehaviour داشته باشیم برای اینکار با یه تکه کد ساده شروع میکنم تا با نکات اولیه اشنا بشیم اگه درخواست ها زیاد شد هم از این بخش و هم بخش هایی که در ادامه هستش مقاله ای جداگانه برای نمونه مثال های ساده منتشر میکنم تا با تکه کد هایی که میتونه کار رو راحت تر بکنه اشنا بشید.برای شروع با کد های ساده شروع میکنیم که زیاد پیچیده نباشه پس با کد پایین شروع میکنیم.کد بالایی رو برای شروع ویرایش میکنیم چیز خاصی نیست اما خب برای شروع بهتره از ساده شروع کنیم تا یادگیری راحت تر باشه :)با استفاده از قوانینی که تو قسمت قبل گفتم یه کد دیگه تو پوشه مخصوص ادیتور ایجاد میکنیم.من معمولا اسم کد های ادیتور رو با اسم خود کد ای که ویرایش میکنه + ادیتور رو انتخاب میکنم اینکار باعث میشه کد رو بهتر و راحت تر پیدا بشه خودتون میتونین با اسمی که باهاش راحتید رو برای اون ها انتخاب بکنیدبعد ایجاد فایل کد و باز کردن اون کتابخونه ادیتور رو فراخوانی میکنیم.بعد از این به جای ارث بری از monobehaviour ارث بری رو مانند عکس پایین به Editor تغییر میدیم.بعد از اضافه کردن این دو گزینه مشخص میکنیم که میخوایم ظاهر کدوم کد رو در ادیتور ویرایش بکنیم که با اضافه کردن کد زیر به بالای کلاس این کار رو انجام میدیم.اگه اسم دیگه ای برای فایل و کلاس کد خودتون انتخاب کردین این اسم رو به اسم همان کد تغییر بدینبعد از ایجاد این تکه کد ها اماده شدیم که شروع به ویرایش قسمت inspector بکنیم.با اضافه کردن OnInspectorGUI به شروع به ویرایش نحوه نمایش کد در ادیتور میکنیم.بعد از اضافه کردن این کد اگر به ادیتور برگردین میبینین که مانند شکل زیر کد هیچ چیزی رو نمایش نمیده.دو کد پایینی همون ادیتور دیفالتی که قبلا بود رو رسم میکنن بدون تغییر (لازم نیست هر دوی این کد ها رو بنویسین یکیشون کافیه)بهترین گزینه از بین این دو اگر همون ادیتور بدون تغییر رو میخواین همون کد اولی هستش که همون چیزی که تو دیفالت میبینید رو رسم میکنه در بعضی موارد کد دوم همون حالت دیفالت رو رسم نمیکنه و بعضی تغییرات رو در ظاهر میده مانند دسته بندی کردن و اینجور موارد که ممکنه خوشایند نباشه(یکی از این موارد موقع ویرایش کردن نحوه نمایش تو قسمت متریال ها هستش)بعد نوشتن این کد ها میتونید ببینید که حالت دیفالت ادیتور رسم میشه ولی خب ما میخوایم خودمون این اجزا رو رسم بکنیم پس با کامنت کردن این تکه کد شروع میکنیم به رسم اجزا به صورت دستی.نمایش اجزای موجود در کد هاخب شروع میکنیم به رسم اجزا.تو کد بالایی تو خط 14 متغییر health رو پیدا و ذخیره میکنیم و در خط 18 ام اون متغییر رو رسم میکنیم(تو خط 18 مقدار true برای نشون داده شدن تمام اجزای زیر مجموعه متغییر هستش که در این مورد میشه حذفش کرد اما اگر یک ارایه رو بدون این مقدار رسم کنین فقط اسم و علامت مثلث متغیر نمایش داده میشن و مقادیر ارایه نمایش داده نمیشن)بهتره این دو گزینه رو به انتخاب خودتون سازماندهی بکنید که تو پیدا کردنشون به مشکل بر نخورید میتونید مثل من هر دو گزینه رو کنار هم رسم کنید یا دسته بندی خودتون رو انجام بدین.الان اگه برگردین به یونیتی میبینید که ارور هایی تو کنسول چاپ میشن باز هم چیزی نمایش داده نمیشه و اگه ادیتور رو از حالت فوکوس در بیارین و باز رو کلیک کنید میبینید بازم همون ارور ها چاپ میشن.مشکل از اینجاست که متغییر های private قرار نیست در ادیتور نشون داده بشن پس خودکار به حالت Serialize ادیتور در نمیان برای اینکه اینکار رو به روش دستی انجام بدیم کد [SerializeField] رو به بالای متغییر اضافه میکنیم که کد به صورت عکس زیر میشه.خب الان باید متغییر در ادیتور نمایش داده بشه مثل عکس پایین.در نظر داشته باشید متغییر هنوز به حالت private هستش و نمیتونید از کلاس دیگه ای بهش دسترسی داشته باشید.متغییر دوم رو هم مثل متغییر قبلی رسم میکنیم.اگه به یونیتی برگردین میبینین که متغییر دومی هم مثل قبلی رسم شده اما این وسط یه چیزی کم داریم اگه تو اسکریپت ها دقت کرده باشین یه فیلدی هستش که اسم فایل کد رو نشون میده و اگه روش کلیک کنین فایل رو نشون میده و اگه دو بار روش کلیک کنید فایل کد برای ویرایش باز میشه.با دو تیکه کد زیر این قسمت رو هم اضافه میکنیم.خب حالا اگه به یونیتی برگردیم با شکلی شبیه به این مواجه میشید.خب حالا همه اجزای ادیتور رو خودمون نشون دادیم و حتی یه متغییر private رو هم اضافه کردیم.اما همونطور که میبینید شبیه حالت دیفالت فاصله ای بین اجزا نیست حالت attribute های Inspector نیز در این کد ها نیز وجود دارند میتونیم با اضافه کردن این گزینه ها فاصله و توضیحات رو هم اضافه بکنیم.بعد از فاصله گذاری ها ادیتوری که در عکس زیر هست رو میبینید.نکاتی در نمایش اجزای موجود در کد هااگر در ویرایشی که در بالا انجام دادیم سعی کنید گزینه هارو ویرایش بکنید میبینید که گزینه ها باز به حالت قبلی برمیگردند و تغییرات ذخیره نمیشود.برای اینکه تغییرات ذخیره شود باید دو خط کد به ابتدا و انتهای کد ها اضافه بکنیم.خط اول (خط شماره 14) تغییرات رو بررسی و در صورت وجود تغییر مقادیر جدید رو به متغییر ها نسبت میده و خط دوم (خط شماره 34) در صورت وجود تغییر اونارو به متغییر ها اعمال میکنه.خب الان اگه دقت بکنید تغییراتی که در متغییر ها اعمال میکنید به راحتی در متغییر ها اعمال میشن.الان مهم ترین تغییری که میتونیم به این کد بدیم بهینه سازی کد هستش پس شروع میکنیم.با این تغییرات فقط در اولین زمان متغییر هارو پیدا میکنیم و در زمان های بعدی فقط متغییر هارو نمایش و ویرایش میکنیم. با اینکار دیگه ادیتور مجبور نیست هر بار که میخواد گزینه های کد رو اپدیت و ویرایش بکنه تمامی متغییر هارو پیدا بکنه.خب تا به اینجا سه گزینه اولی رو با هم یاد گرفتیم تو قسمت بعدی سه گزینه بعدی رو هم توضیح میدم که شامل گزینه های زیر میشن:افزودن اجزای جدید برای دسترسی و ویرایش کد هاکار با توابع و راه اندازی ان هانمایش editor windowامیدوارم مفید واقع شده باشه اگه نکته ای بود که از قلم افتاده یا پیشنهادی دارید میتونید با ارسال کامنت یا با ارسال پیام تو توییتر با من در ارتباط باشید