إعادة تشغيل المستوى
جزء من قسم بناء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 18 من 56.
أسرع طريقة لإعادة ضبط مستوى هي تحميله مرة أخرى. تُعيد SceneManager.GetActiveScene() المشهد المفتوح الآن، وname الخاص به (أو buildIndex الخاص به) هو ما تأخذه LoadScene. يستدعي زر إعادة التشغيل هذا الموجود على لوحة انتهاء اللعبة ما يلي:
public void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}تُدمّر Unity المشهد المفتوح وتُنشئه من جديد من ملف المشهد. يعود كل كائن إلى مكانه الذي وضعه فيه المشهد، بما في ذلك الصندوق الذي أسقطه اللاعب، وتعود لكل حقل قيمة Inspector الخاصة به، ويُشغَّل Awake وStart من جديد. لا حاجة إلى كتابة أي شيفرة لإعادة الأشياء واحدًا تلو الآخر. ولأن الزر يطلب المشهد النشط بدلًا من اسم مثل "Level3"، يعيد البرنامج النصي نفسه تشغيل أي مستوى يُوضَع فيه.
الحقل static ليس جزءًا من المشهد: فهو ينتمي إلى الصنف، لذا تتركه إعادة التحميل كما كان. يحتفظ private static float bestTime; بأفضل وقت عبر عمليات إعادة التشغيل، بينما يبدأ private float time; العادي من 0 مجددًا مع المشهد الجديد. GameManager.Instance ثابت أيضًا: بعد إعادة التحميل، يشير إلى GameManager المدمّر إلى أن يضبطه Awake الخاص بالكائن الجديد.
التحدي
سهلمستويان، Level1 وLevel2، ولكل منهما كائن Level يحمل البرنامج النصي LevelRestart. تحرّك الأسهم اللاعب، والكتلة الذهبية في Level1 تحمّل Level2 (وكلاهما جاهز). أكمل LevelRestart.cs:
- عندما يسقط اللاعب إلى ما دون
fallY(-3)، أضف 1 إلىfallsوأعِد تشغيل المستوى الذي يوجد فيه اللاعب: السقوط في Level2 يعيد تشغيل Level2. - يحصي
fallsكل سقوط في اللعبة، لذا يجب أن يحتفظ بقيمته بعد إعادة التحميل. تعرضه Start بالفعل، بصيغةFalls: 1.
اضغط Play، وامشِ عن الحافة في كلا المستويين، ثم اضغط Check.
جرّب بنفسك
using UnityEngine;
using TMPro;
public class LevelRestart : MonoBehaviour
{
public Transform player;
public TMP_Text fallsText;
public float fallY = -3f;
private int falls;
void Start()
{
fallsText.text = "Falls: " + falls;
}
void Update()
{
// عند النزول أسفل fallY: احسب السقوط وأعد تشغيل المستوى الذي يوجد فيه اللاعب
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس بناء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارالمنصات المتحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء بلا نهاية
ثلاثة مساراتعوائق أمامك