Menu
CoddyTech
flag Ar iconالعربيةdown icon

إعادة تشغيل المستوى

جزء من قسم بناء ألعاب حقيقية في رحلة 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 الخاص بالكائن الجديد.

challenge icon

التحدي

سهل

مستويان، 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: احسب السقوط وأعد تشغيل المستوى الذي يوجد فيه اللاعب
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس بناء ألعاب حقيقية