سلام.
میخواستم بدونم فرق static void با void چیست و چقدر در بهینه سازی کد و فریم تاثیر دارد؟
سلام.
میخواستم بدونم فرق static void با void چیست و چقدر در بهینه سازی کد و فریم تاثیر دارد؟
حداقل لینک بدید یا سورس بزارید
void یعنی تابعی که برگشتی نداره
اگه بخواهید یه متغیر تعریف کنید و بتونید با اسکریپت های دیگه هم روش کنترل داشته باشید و برای هر شی یه مقدار خاص داشته باشه باید از Public استفاده کنید:http://unity3d.ir/%D9%BE%D8%B1%D8%B3...8-private.html
فرض کنید سه مکعب داریم که به هر کدام یک اسکریپت اعمال شده باشد. در هر اسکریپت شما یک متغیر تعریف می کنید به عنوان شماره ی مکعب. نوع این متغیر رو از نوع int و به صورت Public قرار می دهید. و در اسکریپت دیگه میگیم روی هر مکعب که کلیک شد بره و اون عدد اون مکعب رو نشون بده. (یک مثال ساده زدم تا متوجه بشید). شما می تونید هر مکعب رو انتخاب کنید و در بخش Inspector عدد مربوط به خودش رو تغییر بدید و با اجرای بازی خواهید دید که با کلیک کردن روی هر مکعب اون عدد نشون داده میشه.
حالا اگه بخواهید یه متغیر ثابت باشه باید از static استفاده کنید. این نوع متغیر هم مثل Public هست با این تفاوت که یک مقدار ثابت هست:
به عنوان نمونه: یک بازی پازل در نظر بگیرید می خواهیم تفاوت public و static را در آن بررسی کنیم.
برای این که بفهمیم یک بازی پازل به نتیجه رسیده است و انجام شده است باید یکی یکی تمام خانه ها را تکمیل کنیم. بهترین روش این هست که بیاییم و یک اسکریپت به هر خانه ی پازل اعمال کنیم و در این اسکریپت یک متغیر از نوع int و به صورت static تعریف می کنیم. خوب هر قطعه ی بازی یک متغیر داره از نوع int و به صورت static. حالا با یه اسکریپت دیگه میگیم هر خانه که سرجاش قرار گرفت این متغیر یکی اضافه بشه. اگه مثلا خانه ی شماره سرجاش قرار گرفت این متغیر از صفر به 1 تغییر می کنه. اگه خانه شماره 5 مثلا سرجاش قرار گرفت این متغیر از 1 به 2 تغییر می کنه و تا زمانی که تمامی خانه ها سرجایشان قرار می گیرند و بازی تمام می شود. خوب چون متغیر از نوع Static بود این متغیر مدام جمع می شد. اما حالا فرض کنید این متغیر از نوع Public باشه. با این کار هر خانه یک متغیر جداگانه داره. یعنی اگه برفرض با یه اسکریپت دیگه بگیم که اگه خانه ای سرجاش قرار گرفت متغیرش یکی بهش اضافه بشه، فقط متغیر همون خونه یکی بهش اضافه میشه. مثلا اگه خانه ی 1 سرجاش قرار گرفت متغیرش از 0 به 1 تغییر می کنه. یا مثلا اگه خانه ی 5 سرجاش قرار گرفت متغیر خانه ی 5 از صفر به 1 تغییر می کنه. به عبارت دیگه هیچ وقت نمیشه فهمید که بازی انجام شده یا نه (البته میشه کار سخت میشه)
پس تفاوت متغیر Static و Public در این هست که در متغیر Static متغیر در کل بازی یکی هست و ربطی هم به سایر اشیا ندارد. اما در نوع Public متغیر برای هر شی متفاوت هست.
متغیر Private هم که معلومه از اسمش. یعنی خصوصی. برای زمانی به کار میاد که شما نخواهید اولا متغیر در Inspector دیده بشه و ثانیا با استفاده از اسکریپت های دیگه دسترسی به این متغیر نباشه.
گزینه های override ویا virtual و protected برای بحث ارث بری در سی شارپ می باشد. به نظرم به جای این که مستقیم دنبال این سه واژه در گوگل بگردید برید سراغ بحث ارث بری. اگه بخوام توضیح بدم گیج میشید. بهتره از سایت های تخصصی فارسی بپرسید. فقط در همین حد بگم که ارث بری کارها رو خیلی راحت تر می کنه. خیلی از خصوصیات و متغیرهای یک کلاس رو می توان به ارث برد.
با تشکر
سید
ویرایش توسط Ahmad_2 : 08-10-2017 در ساعت 09:55 PM
E.K.S (08-11-2017)
E.K.S (09-21-2017)
در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)