ساختار و طرز کار اسکریپتها
برای یادگیری صحیح و اصولی نحوهی اسکریپتنویسی در انجین یونیتی، ابتدا باید با ساختار اسکریپتها و طرز کار آنها با یکدیگر در این انجین آشنا شویم. همانطور که گفته شد اسکریپتنویسی در یونیتی عمدتاً با هدف ایجاد کامپوننتهایی صورت میپذیرد که به صورت پیشفرض در یونیتی وجود ندارند. در این حالت یک فایل اسکریپت نوشته شده توسط برنامهنویس میتواند به عنوان یک کامپوننت اختصاصی عمل کند. به وسیلهی اسکریپتنویسی میتوان مکانیک و کارکردهای بعضاً پیچیدهی مدنظر طراح بازی را پیادهسازی نمود که ممکن است پیادهسازی آنها با کامپوننتهای بومی یونیتی بسیار دشوار و یا ناممکن باشد.
هر اسکریپت یونیتی، فایلی متنی با فرمت cs (مخفف CSharp) است که اگر توسط فرمانCreate C# Script ادیتور یونیتی ایجاد شده باشد (با مراجعه به پنجرهی Project و انتخاب C# Script از منوی Create) محتوی کدهای از پیش نوشته شدهای خواهد بود.
این کد از پیش نوشته شده شامل کلاسی همنام فایل است که از کلاسی به نام MonoBehaviour
ارثبری کرده و دارای دو متد Start
و Update
میباشد.
نکته
این عمل با قواعد دات نت فریمورک برای فایلهای سی شارپ کاملاً مطابق است. چرا که در سی شارپ استاندارد نیز هر کلاس در فایلی همنام خودش قرار دارد.
نکته
به دلیل همنام بودن نام کلاسی که برای اسکریپت ایجاد میگردد با نام فایل توصیه میشود که نام اسکریپت مطابق با قواعد نامگذاری کلاس و به صورت PascalCase نوشته شود.
به عنوان مثال اگر اسکریپتی به نام TestScript
در ادیتور یونیتی ایجاد کنیم محتوایی که پس از ایجاد شدن فایل به صورت اتوماتیک در آن قرار میگیرد به صورت زیر خواهد بود:
اسکریپت MonoBehaviour
کلاس اسکریپتهایی که فایل آنها توسط یونیتی ایجاد میشود به طور خودکار از کلاسی به نام MonoBahaviour
ارثبری میکنند. کلاس MonoBahaviour
یکی از کلاسهای مختص به یونیتی بوده که در فضای نام UnityEngine
قرار دارد (در مثال بالا این فضای نام در سطر 3 به اسکریپت شناسانده شده است). به اسکریپتی که از کلاس MonoBahaviour
ارثبری کرده باشد اسکریپت MonoBahaviour گفته میشود.
برای این که یک اسکریپت بتواند به صورت کامپوننت به گیمآبجکتها اضافه شود لازم است که از این کلاس ارثبری کرده باشد؛ در غیر این صورت هنگام drag کردن آن بر روی Inspector گیمآبجکت با خطا مواجه میشویم. از آنجایی که در اکثر موارد هدف از اسکریپتنویسی ایجاد کامپوننت اختصاصی است بنابراین کلاسهای ایجاد شده به طور پیشفرض از کلاس MonoBahaviour
ارثبری میکنند. در مواردی به جز استفاده از اسکریپت به عنوان کامپوننت، میتوان به سادگی عبارت MonoBahaviour
را به طور دستی حذف کرد. اما تقریباً تمام اسکریپتهایی که ما در یونیتی مینویسیم به منظور ایجاد کامپوننت و در نتیجه اسکریپت MonoBehaviour هستند.
از آنجایی که هر کامپوننت یونیتی در واقع یک شی محسوب میشود بنابراین کامپوننتی که از روی اسکریپت MonoBahaviour ساخته میشود نیز یک شی به شمار میرود. در این حالت شی از روی کلاس اسکریپت MonoBehaviour
که اسکریپتنویس بازی نوشته است نمونهسازی میشود.
مثل هر کلاس دیگری در سی شارپ، کلاسهای اسکریپتهای یونیتی نیز از فیلدها و متدها تشکیل شدهاند. در اسکریپتهای MonoBehaviour فیلدها و متدها هر کدام نقش مشخصی را در کامپوننت ساخته شده ایفا میکنند که در مطالب بعدی به آنها خواهیم پرداخت.