no-img
سامنتا

آموزش ساخت بازی دو بعدی (جلسه ی هشتم)


سامنتا
دوره های پیشنهادی

ادامه مطلب

آموزش ساخت بازی دو بعدی (جلسه ی هشتم)


برای دیدن جزئیات تمام جلسه های این دوره اینجا کلیک کنید .

منوهای بازی ، ایجاد بارگزاری و شروع مجدد بازی

در درس های قبلی یک بازی تک مرحله ای با گیم پلی ، موزیک ، گرافیک و particle پیاده کردیم . 

به هر حال ، زمانی که player می میرد بازی ادامه پیدا میکند و شروع کردن مجدد آن ممکن نیست  هم چنین بازی بصورت مستقیم وارد یک مرحله میشود و هیچ منو یا کنترلی وجود ندارد .

از آنجا که به یونیتی ۴٫۶ و نسخه های بالاتر ابزار UI که به آن GUI می گویند  اضافه شده میتوانیم با استفاده از این ابزار منوهای خوبی بسازیم 

ما نمیخواهیم GUI پیچیده ای در این آموزش بسازیم ولی پایه و مفاهیم را یاد خواهیم گرفت 

Asset های مورد نیاز : 

پس زمینه : 

آموزش ایجاد منو در یونیتی

لوگو : 

آموزش ساخت منو در یونیتی

asset ها را دانلود کنید و به پروژه ی خودتان اضافه کنید شما میتوانید یک فولدر به نام Menu بسازید و asset های مربوط به منو را درون آن قرار دهید که زیر مجموعه ی فولدر sprites باشد در غیر اینصورت تداخل بین فایل های دیگر اتفاق می افتد . 

برای دکمه ها از یک نوع استاندارد استفاده خواهیم کرد 

صحنه ی عنوان یا Title screen

تقریبا تمام بازی ها یک صفحه ی عنوان برای معرفی و نمایش نام بازی دارند چیزی که کاربر هنگام شروع بازی آنرا میبیند

Scene یا صحنه 

یک صحنه ی جدید بسازید : 

  • “File” -> “New scene”
  • صحنه را در پوشه ی Scenes با نام Menu ذخیره کنید 

صجنه ما باید شامل : 

  • یک بک گراند 
  • یک لوگو
  • اسکریپتی که بتواند دکمه ها را نمایش دهد 

برای ساخت بک گراند ابتدا باید یک Image از نوع UI بسازید برای این کار به Game Object” -> “UI” -> “Image بروید 

آموزش ساخت منو برای بازی در یونیتی

آموزش ساخت منو برای بازی در یونیتی

تصویر بک گراندی که قبلا وارد یونیتی کرده اید را به این Image که تازه ساخته اید اختصاص دهید تا تصویر بک گراند را به نمایش بگذارد 

anchor مربوط به Image را از Inspector به horizontally & vertically تغییر دهید 

anchors در یونیتی

مطمئن شوید که مقدار top buttom left right صفر باشد 

اکنون شما بک گراندی دارید که در تمام رزولیشین ها بصورت تمام صفحه نمایش داده خواهد شد 

ساخت منو در یونیتی

ساخت منو در یونیتی

حال لوگو را همانند بک گراند اضافه کنید 

  1. سایز انرا به ۵۱۲*۵۱۲ تغییر دهید
  2. Preserve ratio را تیک بزنید
  3. anchor را به middle & center تغییر دهید 

ساخت منو در یونیتی

البته شما میتوانید تصاویر بهتر خود را بجای تصاویر بالا بگذارید که شامل نام و لوگوی اختصاصی خود شما باشد اما به خاطر داشته باشید که کاربر دوس دارد هر چه سریعتر بازی بارگزاری شود 

اسکریپت Loading یا بارگزاری 

جال ما میخواهیم دکمه ای اضافه کنیم که با کلیک آن بازی باز شود 

برای ساخت یک دکمه به منوی Game Object -> UI -> Button مراجعه کنید جای انرا میتوانید تغییر دهید و میتوانید متن text درون آنرا نیز عوض کنید 

ساخت دکمه یا button در یونیتی

یک اسکریپت جدید ایجاد کنید و نام انرا MenuScript بگذارید اسکریپت ساخته شده را به game object خالی که قبلا ساختیم به نام Scripts اختصاص دهید (این game object یک شی خالی هست که فقط اسکریپت ها را نگهداری میکند )

محتویات اسکریپت باید به صورت زیر باشد 

using UnityEngine;
/// <summary>
/// Title screen script
/// </summary>
public class MenuScript : MonoBehaviour
{ public void StartGame() { // "Stage1" is the name of the first scene we created. Application.LoadLevel("Stage1"); }
}

برای استفاده کردن از این اسکریپت بر روی button که پیش تر ساختیم به روش زیر عمل کنید 

روی Button کلیک کنید و به Inspector بروید 

  1. در قسمت پایین روی + کلیک کنید تا یک Listener جدید درست کنید 
  2. شی Scripts را که اسکریپت روی ان قرار دارد به خط خالی در listener درگ کنید 
  3. در قسمت تابع فراخوانی MenuScript.StartGame() را انتخاب کنید 

رویداد کلیک Button در یونیتی  

بازی را اجرا کنید و نتیجه نهایی را ببینید 

آموزش ساخت منو در یونیتی

روی Play کلیک کنید  و …. برنامه کرش میکند .

Level 'Stage1' (-1) couldn't be loaded because it has not been added to the build settings. To add a level to the build settings use the menu File->Build Settings...

خطا بصورت شفاف مشخص هست و کاری که باید انجام دهیم اضافه کردن مرحله به تنظیمات بازی هست 

اضافه کردن مرحله یا صحنه به قسمت Build در یونیتی 

به منوی “File” -> “Build Settings” بروید 

تنظیمات build در یونیتی

حالا تمام صحنه هایی که ساخته اید و میخواهید درون پکیج بازی قرار بگیرد را به این قسمت درگ کنید مثلا Menu و Stage1 

اضافه کردن مرحله به تنظیمات build در یونیتی

از تنظیمات خارج شوید و بازی را اجرا کنید و دکمه ی play را بزنید 

ساخت منو در یونیتی

گاهی اوقات نیاز دارید که game object هایی که در صحنه حاضر هستند با رفتن به صحنه ی جدید از بین نروند در این حالت باید از متد DontDestroyOnLoad(aGameObject) استفاده کنید .

پایان بازی و شروع مجدد 

در نهایت ، ما میخواهیم به کاربر این اجازه را بدهیم که بعد از مرگ باریکن ، بتواند بازی را از نو شروع بکند 

در بازی این جریان ها اتفاق می افتد : 

  1. player توسط گلوله مورد اصابت قرار میگیرد 
  2. HealthScript.OnCollisionEnter فراخوانی میشود 
  3. player مقدار  1 از سلامتی خود را از دست میدهد 
  4. HealthScript شی player را نابود میکند زمانی که مقدار جان player کمتر از مقدار ۱ شود 

ما باید دو قدم دیگر اضافه کنیم : 

  1. PlayerScript.OnDestroy فراخوانی میشود
  2. یک اسکریپت جدید به نام GameOverScript بسازیم و به صحنه اضافه کنیم 

پس در پوشه ی اسکریپت ها یک اسکریپت جدید به نام GameOverScript بسازید 

محتویات زیر را کپی کنید که شامل پیاده سازی دکمه هایی برای  Restart و Back to Menu هست : 

using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// Start or quit the game
/// </summary>
public class GameOverScript : MonoBehaviour
{ private Button[] buttons; void Awake() { // Get the buttons buttons = GetComponentsInChildren<Button>(); // Disable them HideButtons(); } public void HideButtons() { foreach (var b in buttons) { b.gameObject.SetActive(false); } } public void ShowButtons() { foreach (var b in buttons) { b.gameObject.SetActive(true); } } public void ExitToMenu() { // Reload the level Application.LoadLevel("Menu"); } public void RestartGame() { // Reload the level Application.LoadLevel("Stage1"); }
}

همچنین ما به تعداد آیتیم UI نیازمندیم که باید انها را بسازیم 

  1. در صحنه ی Stage1 یک Panel درست کنید 
  2. تصویر Source Image را پاک کنید و رنگ آنرا به سفید با آلفای کامل تغییر دهید 
  3. دو عدد دکمه مثل بالا اضافه کنید 
  4. GameOverScript را به panel که همین الان ساختیم اضافه کنید 

ساخت gameover یا پایان بازی در یونیتی

برای هر یک از Button ها : 

  1. رویداد OnClick() را اضافه کنید 
  2. GameOverScript را انتخاب کنید 

برای مثال دکمه Back to menu : 

ساخت gameover در یونیتی  

حال در اسکریپت PlayerScript باید مثل زیر عمل کنیم 

void OnDestroy()
{ // Game Over. var gameOver = FindObjectOfType<GameOverScript>(); gameOver.ShowButtons();
}

 

بازی را اجرا کنید و سعی کنید بمیرید : 

نمایش کادر game over در یونیتی

خب اساس کار همین هست شما میتوانید بسته به سلیقه ی خود انیمیشن یا جلوه های صوتی هم اضافه کنید 

خسته نباشید

لطفا سایت سامنتا را با دوستان خود به اشتراک بگذارید 

با احترام 

 




درباره نویسنده

پشتیبانی سامنتا 84 نوشته در سامنتا دارد . مشاهده تمام نوشته های

پرسش و پاسخ این آموزش


یک پاسخ به “آموزش ساخت بازی دو بعدی (جلسه ی هشتم)”

  1. said گفت:

    واقعا سایت عالی مفیدی

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *