آموزش یونیتی- قسمت نوزدهم

مهم است که قبل از شروع برنامه نویسی ، درباره داده هائی که بازی ما نیاز دارد ، فکر کنیم . ما از یک سطح بالا درباره این داده ها تصور خواهیم کرد . مثلا می دانیم که باید اطلاعاتی را درباره بچه گرازها ، گرازهای بالغ ، جوجه ها و مرغ های بالغ نگهداری کنیم . همچنین باید بدانیم که اینها چقدر آب و غله مصرف می کنند و اینکه کشاورز جوان چقدر آب و غله جمع آوری کرده و مجموع ذخیره او چقدر است در ادامه ما نگاهی دقیق تر به داده های مورد نیازمان خواهیم داشت و تصمیم می گیریم که متغییرهایمان را چه بنامیم .

درباره گرازها


در بازی ما ۱۰ بچه گراز و ۱۰ گراز بالغ وجود دارد . برای هر یک از این حیوانات ، باید مقدار واحدهائی از آب و غله هر حیوان را دنبال کنیم . جدول زیر محدوده هر یک از آیتم های داده ای را نشان می دهد :

آموزش یونیتی- قسمت نوزدهم


آیتم visible(قابل دیدن) از نوع بولی و corn(غله) و water) (آب) از نوع عدد صحیح خواهند بود . ما از دو آرایه استفاده می کنیم . یک آرایه مخصوص بچه گرازها خواهد بود و دیگری مخصوص گرازهای بالغ . چون آرایه ها از یک نوع داده استفاده می کنند ، ما به جای نوع داده بولی از ۰ و ۱ برای نمایش مخفی بودن و آشکار بودن استفاده می کنیم . ستون اول ، شماره حیوان است بنابراین مقادیر آن ۰ ، ۱ ، ۲ ، ۳ ، . بود خواهد ۹ و ۸ ، ۷ ، ۶ ، ۵ ، ۴ ستون دوم نشان می دهد که آیا بچه گراز قابل دیدن است یا خیر . ۰ نشان می دهد که بچه گراز قابل دیدن نیست و ۱ نشان می دهد که بچه گراز قابل دیدن است . ستون های سوم و چهارم به ترتیب تعداد واحدهای غله و آب را نشان می دهند . اسکریپت ایجاد آرایه بچه گراز را ببینید:

آموزش یونیتی- قسمت نوزدهم


خط ۶ نحوه ایجاد یک آرایه با ۱۰ سطر و ۳ ستون را نشان می دهد . یادآوری می کنم که آرایه ها از صفر شروع می شوند بنابراین یک آرایه ۱۰ در ۳ به شکل زیر خواهد بود:

آموزش یونیتی- قسمت نوزدهم


از خط تا ۱۰ ۱۵ ، از یک حلقه for برای مقداردهی اولیه آرایه استفاده کرده ایم . ما با صفر ، حرکت از میان سطرهای آرایه را شروع و با ۹ پایان می دهیم . خطهای ۱۴و ۱۳ ،۱۲ مقادیر را داخل آرایه قرار می دهند .در اولین ستون مقدار ۱ قرار داده می شود تا نشان دهد که بچه گراز ، قابل دیدن است . دو ستون بعدی نشان می دهند که صفر واحد غله و آب وجود دارد . برای دیدن این موضوع در عمل ، کد زیر را بین خط ق ۱۵و ۱۴ قرار دهید:

Debug.Log (“Piglet ” + i +”\t” + pigletArray[i,0] + “\t” + pigletArray[i, 1] + “\t”+ pigletArray[i, 2]);

هنگام ذخیره اسکریپت ، باید آن را به داخل گزینه Camera Main درگ کنید . حالا اجازه دهید بازی را اجرا و خروجی را ببینیم . می بینید که ۱۰ بچه گراز وجود دارد که هر کدام در ستون اول یک “۱ “ندار د و دو ستون بعدی آنها صفر است :

آموزش یونیتی- قسمت نوزدهم

آموزش یونیتی- قسمت نوزدهم


حالا آرایه گرازهای بالغ را هم اضافه می کنیم . برای این کار ، آرایه بچه گرازها را کپی می کنیم . pigletArray را به pigArray تغییر می دهیم و چون در ابتدای بازی ، گرازهای بالغ قابل دیدن نیستند ؛ ستون دوم را صفر قرار می دهیم:


مرغ ها و جوجه ها

جوجه ها و مرغ ها نیز همان داده های شبیه به گرازها را نیاز دارند :

حالا ۴ آرایه داریم ، یکی برای هر نوع حیوان !

غله و آب

محیط بازی ما مقدار نامحدودی از آب و غله دارد . هنگامی که بازیکن غله جمع آوری می کند ، از مزرعه هیچ غله ای کم نمی شود . همچنین هنگامی که بازیکن آب جمع آوری می کند ؛ از رودخانه هیچ آبی کم نمی شود . بنابراین برای غله و آب فقط نیاز به ایجاد اعداد صحیح داریم . اجازه دهید یک اسکریپت جدید ایجاد و آن را GameData بنامیم . سپس آن را به Camera Main الصاق کنید :

آموزش یونیتی- قسمت نوزدهم


در خط ۷و ۶ برای آب و غله اعداد صحیحی به صورت public ایجاد کرده ایم . ما متغییرها را اعلام و در همان نقطه ، مقدار اولیه را به آنها واگذار کردیم . با اعلام این متغییرها به صورت public ، می توانیم در نمای Inspector ، مقادیر آنها را مشاهده و تغییر دهیم.


می بینید که در نمای Inspector ، مقادیر arrays قابل دسترسی نیستند اما به مقادیر GameData می توان دسترسی داشت . علت این است که متغییرهای موجود در GameData ( corn و water ) به صورت public اعلام شده اند . اما متغییرهای تعریف شده در اسکریپت Arrays به صورت private اعلام شده اند .

مقداردهی اولیه داده ها


ما در این بازی ، سه گروه اصلی از داده ها داریم . گروه اول مخصوص بچه گرازها و گرازهای بالغ است . گروه دوم مخصوص جوجه ها و مرغ هاست . هر دو این گروه ها در اسکریپت Arrays کدنویسی شده اند . داخل این اسکریپت ، اعلام داده ها و مقداردهی اولیه آنها در تابع Start انجام شده که باعث می شود ، هنگامی که شئ الصاق شده به این اسکریپت مقداردهی اولیه می شود ، این بخش از اسکریپت اجرا شود . چون این اسکریپت به گزینه Camera Main الصاق شده ، هنگامی که بازی در ابتدا بارگذاری می شود ، اسکریپت اجرا خواهد شد . سومین گروه از داده ها یعنی متغییرهای corn و water در تابع Start اسکریپت GameData تعریف شده اند که این اسکریپت نیز به Camera Main الصاق شده است.


نکته: نمای Inspector اسامی اسکریپت ها را به طور متفاوت با نمای Project نشان می دهد . مثلا ما اسکریپت GameData را ایجاد کردیم و در نمای Project به درستی نمایش داده می شود . در نمای Inspector ، یک فاصله بین دو کلمه نشان داده می شود . تمام متغییرهای نشان داده شده در نمای Inspector نیز با فاصله نمایش داده می شوند . نگران نباشید . این ضربه ای به بازی نمی زند !

منبع:
javad.arbabi e-book
ir.dev-bazi