30 بهترین نکات/ترفندهای نرم افزار یونیتی (مبتدی تا حرفه ای)
در طی سال ها کار با Unity، نکات و ترفندهایی راجع به چگونگی بهتر شدن گردش کار انتخاب کردیم. در این لیست موارد دلخواه شخصی قرار دارد، همچنین شامل موارد بسیار مفیدی است که اخیراً پیدا کردیم. این نکات را بر اساس جنبه های مختلف توسعه بازی Unity به گروه هایی تقسیم کرده ایم.
ابتدا ترفندهای کاربردی طبق تجربه خودم
گفتیم که یونیتی یکی از پرکاربردترین موتورهای بازیسازی است که توسط Unity Technologies توسعه داده شده است. این موتور با قابلیتها و ابزارهای گوناگونش به توسعهدهندگان اجازه میدهد بازیهایی بسیار زیبا و قدرتمند را بسازند. در زیر تعدادی از نکات و ترفندهای مفید برای کار با یونیتی را بررسی میکنیم:
1. استفاده از Prefabs
Prefabs یکی از قابلیتهای قدرتمند یونیتی است که به شما امکان میدهد اشیاء را به عنوان یک الگو ذخیره و باز استفاده کنید. با استفاده از Prefabs، میتوانید اشیاء را به صورت مکرر در سطح بازی خود استفاده کنید و تغییراتی که در یکی از اشیاء اعمال میکنید به طور خودکار در سایر اشیاء مشابه اعمال شود.
2. استفاده از Scriptable Objects
Scriptable Objects یکی دیگر از ابزارهای قدرتمند یونیتی است که به شما امکان میدهد دادهها و تنظیمات را در سطح پروژه خود ذخیره کنید. این اشیاء اسکریپتی بدون نیاز به نمونهسازی میتوانند در سطح پروژه ایجاد شوند و از طریق اسکریپتها در سطح بازی استفاده شوند.
3. استفاده از Animator Controller
Animator Controller یک ابزار قدرتمند در یونیتی است که برای ایجاد و مدیریت انیمیشنها و رفتارهای مختلف اشیاء در بازی استفاده میشود. با استفاده از Animator Controller میتوانید انیمیشنهای مختلف را با هم ترکیب کرده و رفتارهای پیچیده را برای اشیاء خود پیادهسازی کنید.
4. استفاده از Cinemachine
Cinemachine یک پکیج موتور دوربین قدرتمند برای یونیتی است که به شما امکان میدهد به راحتی دوربینهای پیچیده و داینامیک را در بازیهای خود ایجاد کنید. با استفاده از Cinemachine میتوانید به راحتی افکتهای دوربینی متنوعی را ایجاد کرده و تجربه بازیبازان را بهبود ببخشید.
5. استفاده از Unity Events
Unity Events یکی از ویژگیهای مفید یونیتی است که به شما امکان میدهد اعمال مختلفی را به رویدادهای مختلف در بازیتان متصل کنید. با استفاده از Unity Events میتوانید اقداماتی را مانند فعالسازی یا غیرفعالسازی اشیاء، ایجاد صدا و تصویر و ... به رویدادهایی مانند برخورد، کلیک، تغییر وضعیت و ... متصل کنید.
6. استفاده از Debugging Tools
یونیتی دارای ابزارهای قدرتمندی برای اشکالزدایی و تست بازیهای شما است. از ابزارهایی مانند Console Window، Debug.Log و Breakpoints برای پیدا کردن و رفع اشکالات در کدهای خود استفاده کنید.
7. استفاده از Asset Store
Asset Store یک بازار آنلاین برای خرید و فروش منابع و ابزارهای مختلف برای یونیتی است. با استفاده از Asset Store میتوانید به سرعت منابع مورد نیاز خود را پیدا کرده و در پروژههای خود استفاده کنید.
8. استفاده از Scripting API
یونیتی امکان استفاده از زبانهای برنامهنویسی مختلفی مانند C# و JavaScript را فراهم میکند. با استفاده از Scripting API میتوانید اقدامات پیچیدهتری را برای اشیاء و سناریوهای بازیتان پیادهسازی کنید.
و حالا بقیه ترفندها و نکات:
رابط (Interface)
۱- یک طرح سفارشی برای گردش کار خاص ایجاد کنید. به طور معمول با یک طرح گسترده با پانل پروژه سمت چپ در حالت یک ستون کار می کنیم. اگر پانل ها و پنجره ها را در یک طرح خاص ترجیح می دهید، آن را ذخیره کنید سپس می توانید به راحتی بین طرح ها جابجا شوید تا گردش کارتان سریع تر شود.
۲- اگر لازم است دو شیء بازی را با پانل inspector مقایسه کنید، پانل inspector را کپی کنید، شیء خود را انتخاب کنید، سپس آن پنل را قفل کنید. سپس می توانید شیء دوم خود را انتخاب کرده و آن ها را در کنار دو پانل inspector مشاهده کنید.
۳- در حالت play می توانید یک رنگ را به ویرایشگر اعمال کنید. این کار مفیدی است زیرا تغییرات ایجاد شده در حالت play ذخیره نمی شوند، بنابراین داشتن رنگ قرمز آشکار در هنگام play می تواند شما را از این امر آگاه کند.
۴- کامپوننت ها دارای نماد چرخ دنده در سمت راست بالا هستند. از آن برای بالا بردن کامپوننت ها، کپی کردن مقادیر و حذف آن ها از یک شی بازی استفاده کنید.
۵- از بوم بزرگ که مانع دید شما در صحنه می شود اذیت می شوید؟ با کلیک روی نماد “eye” در سمت راست بالا، لایه UI را پنهان کنید.
انیمیشن
۱- از ماسک های آواتار برای ترکیب چندین انیمیشن بر اساس قسمت های بدن استفاده کنید. این امر نیاز به چندین انیمیشن سفارشی مانند موارد خاص در قسمت فوقانی و پایین بدن را کاهش می دهد. به عنوان مثال می توانید در حین نمایش انیمیشن های جداگانه بالا تنه، بدون نیاز به حالت اجرا در هر یک از آن ها، اجرا انجام دهید.
۲- می توانید از Inverse Kinematics برای تقلید گرفتن یا گرفتن وسایل مکانیکی مانند نگه داشتن فرمان، گرفتن اسلحه های مختلف و غیره استفاده کنید.
۳- علامت “Have Exit Time” را برای هرگونه انتقال انیمیشن که باید هنگام استفاده از یک پارامتر فوراً اتفاق بیفتد، بردارید. Time Exit مشخص می کند که یک کلیپ انیمیشن قبل از انتقال باید اجرا را تمام کند. این موردی است که معمولاً نادیده گرفته می شود و برای کاربران سوال پیش می آید که چرا انیمیشن های آن ها به تعویق افتاده یا کار نمی کنند.
۴- در جهت های مختلف می توانید انیمیشن ها را آینه کنید. یک انیمیشن چرخشی چپ را می توان برای یک انیمیشن چرخشی راست آینه کرد. توجه داشته باشید که انیمیشن را معکوس نمی کند و تنها در انیمیشن های انسان نما کار می کند.
یونیتی رو قورت بده! بدون کلاس، سرعت 2 برابر، ماندگاری 3 برابر، پولسازی عالی ساخت بازی دو بعدی و سه بعدی... دانلود:
پک 1 بازی سازی دو بعدی (مبتدی تا متوسط) پک 2 بازی سازی دو بعدی (پیشرفته)
پک 1 بازی سازی سه بعدی (مبتدی تا متوسط) پک 2 بازی سازی سه بعدی (پیشرفته)
۵- می توانید کلیپ های انیمیشن را با اضافه کردن مقدار منفی برای speed معکوس کنید. این با انیمیشن های کلی و انسان نما کار می کند، به عنوان مثال پیاده روی رو به جلو می تواند برای پیاده روی رو به عقب نیز استفاده شود.
Scripting (اسکریپت کار کردن)
۱- برای افزودن لغزنده یا slider به مقادیر عددی از Range Attribute استفاده کنید. اگر تیمی کار می کنید، خیلی مفید است زیرا هرکسی که مقادیر را تعیین کند، نمی تواند مقدار کمتر یا بالاتر از آنچه برای استفاده انتظار دارید، اضافه کند. همچنین نگاه کردن به مقادیر عددی را آسان تر می کند.
۲- معمولاً چندین اسکریپت کوچک تر که وظایف خاصی را انجام می دهند بهتر از یک اسکریپت غول پیکر هستند چون برای اصلاح بهترند. به اجزای پیش فرض Unity مانند Rigidbody ، AudioSource ، Colliders و غیره فکر کنید. همه این ها وظایف خاصی را انجام می دهند و می توانند با یکدیگر کار کنند اما Rigidbody کلیپ های صوتی را پخش نمی کند. توجه داشته باشید که همیشه این مورد برقرار نیست، اما در صورت امکان همه چیز را به صورت مدولار نگه دارید.
۳- اسکریپت های خود را سازماندهی کنید تا خواندن آن ها آسان باشد. ما دوست داریم متغیرهای عمومی را در بالا و متغیرهای خصوصی را در پایین نگه داریم. همین کار را با متد ها انجام دهید تا بدون نیاز به تسلط زیاد روی اسکریپت به راحتی درک شوند.
۴- Tool tips و headers یک روش عالی است که به دیگران می گوید یک متغیر / گروه خاص به چه مواردی اشاره دارد.
۵- از کلاس های Gizmos و Handles برای آزمایش مکانیک های مختلف بازی مانند ترسیم کره سیم استفاده کنید تا دامنه مواد منفجره در بازی یا نمایش شعاع کاراکتر دشمن را مشخص کنید:
۶- ذخیره کد قطعات و اسکریپت های کامل در کامپیوتر مفید است. ما یک پوشه خاص برای قطعات مفید کد که احتمالا در چند پروژه استفاده می شوند و احتمال فراموشی آن ها بالاست، در کامپیوتر در نظر گرفتیم. در مورد اسکریپت های کاملی که ساخت دوباره آن ها زحمت دارد هم، همین مسئله صادق است.
۷- در صورت امکان اجزای حافظه کش را در یک متغیر به روش Start یا Awake ذخیره کنید. استفاده از GetComponent در Update ضروری نیست.
۸- هنگام نوشتن حلقه ها / شرط if / موارد دیگر، tab را دو بار فشار دهید تا به سرعت و خودکار، کامل و بسته شدن پرانتز و براکت ها انجام شود. به عنوان مثال ، “if” را بنویسید و tab را دوبار بزنید تا تکمیل شدن خودکار کد را با بیانیه کامل if ببینید.
کارایی و کیفیت
۱- در صورت امکان از تکستچر اطلس استفاده کنید چون کارایی خوبی دارد و همچنین اگر چندین asset تکستچر مشابه نقشه ها و مواد را به اشتراک بگذارند، سازماندهی فایل را آسان تر می کند. در مثال زیر از تکستچر اطلس در Tower Defense Flow برای ویژگی های چند گانه و اشیاء بازی که همه در یک نقشه تکستچر بزرگتر قرار دارند، استفاده شده است.
۲- هر وقت بخواهید می توانید در صحنه های خود نورپردازی انجام دهید. نورپردازی اگر روی realtime تنظیم شود، کارایی مفیدی دارد. اگر نیازی به نورپردازی realtime ندارید، آن ها (اشیاء بازی) را روی static و bake تنظیم کنید. همچنین می توانید از ترکیبی از نورپردازی در realtime و bake استفاده کنید.
۳- در صورت نیاز به استفاده از مش کلایدر (کلایدرهای compound کارایی بیشتری دارند) توصیه می شود یک نسخه low poly از همان مش ایجاد کنید تا به عنوان مش کلایدر استفاده شود. این نه تنها یک مش کلایدر با کیفیت بالاتر را فراهم می کند بلکه می تواند عملکرد بهتری نیز داشته باشد. همچنین می توانید از Convex استفاده کنید، اما ممکن است نتایج مطلوبی ارائه ندهد.
۴- هنگامی که با استفاده از پیام های Debug.Log به پایان کار رسیدید، آن ها را حذف کنید یا نظر دهید. برای سایر پیام های اشکال زدایی و / یا متد های اشکال زدایی ” drawing” نیز صادق است.
۵- پنجره ” stats” می تواند برای تعیین فریم مناسب در ثانیه نادرست باشد. توصیه می شود شمارنده FPS خود را بسازید و از profiler برای عملکرد دقیق تر stats استفاده کنید. ما معمولا از پنجره stats برای set pass calls استفاده می کنیم.
۶- برای کاهش اندازه و افزایش کارایی از نقشه ها با کمترین وضوح تصویر استفاده کنید.
۷-اگر انتظار دارید از چندین اشیاء بارها و بارها استفاده کنید از یک سیستم جمع آوری اشیاء برای استفاده مجدد و بدون از بین بردن آن ها استفاده کنید. معرفی و از بین بردن بسیار سریع چندین اشیاء می تواند باعث تخلیه عملکرد شود و کارامد نیست.
سازمان دهی پروژه
۱- از اشیاء بازی خالی (empty) در صحنه خود استفاده کنید تا مانند آیتم ها در کنار یکدیگر گروه بندی شوند. به عنوان نمونه می توان همه ساختمان ها / درختان و زمین های را در گروهی با عنوان “Environment” طبقه بندی کرد. این امر نه تنها یافتن اشیاء را آسان تر می کند، بلکه فعال / غیر فعال کردن گروه های اشیاء را نیز آسان می کند.
۲- در یک یادداشت مشابه، از اشیاء بازی خالی به عنوان اشیاء والد برای مواردی مانند مش (mesh) استفاده کنید. در صورت امکان از قرار دادن اسکریپت ها یا مؤلفه ها به طور مستقیم روی مش ها خودداری کنید. استفاده از والد خالی ویرایش مش را بدون نیاز به ایجاد مجدد و اضافه کردن مؤلفه ها، آسان می کند. همچنین به شما امکان می دهد تا ضمن ثابت نگه داشتن والد، موقعیت / چرخش اجسام مش را کنترل کنید.
۳- یک ساختار پوشه استاندارد در پانل پروژه خود ایجاد کنید. در زیر تصویری از چگونگی چیدمان پوشه ها قرار داده شده است. نام آن ها به شما بستگی دارد، اما سعی کنید هماهنگ باشید.
۴- از نامگذاری مبهم پوشه ها خودداری کنید. اگر سطل زباله دارید، آن را “TrashCan_Prop” بنامید. هر کسی باید بتواند سلسله مراتب صحنه یا پنل پروژه شما را مرور کند و درک خوبی از اشیا، داشته باشد.
۵- Unity Services یک روش عالی برای مدیریت پروژه های شما، یعنی خدمات Collaborateand Cloud Build است. ما از Collaborate برای ذخیره نسخه های پروژه خود برای دسترسی به سایر اعضای تیم، استفاده می کنیم. Cloud Build یک روش عالی برای ساخت بازی برای سیستم عامل های مختلف است و سپس به صورت خودکار لینک های مربوط به ساخت های نهایی را برای اعضای تیم به ایمیل ارسال می کند.
آموزش های یونیتی ما
- دانلود رایگان آموزش صفر تا صد نرم افزار یونیتی (فیلم فارسی+ جزوه pdf)
- دانلود رایگان ۳ تا از بهترین جزوه های PDF آموزش یونیتی
مفید بود ممنون
پاسخ