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

المستوى التالي

جزء من قسم بناء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 19 من 56.

لكل مشهد في قائمة مشاهد البناء رقم يُسمّى فهرس البناء: 0 للأول، و1 للذي يليه، وهكذا. تقبل LoadScene هذا الرقم بالإضافة إلى الاسم، وتُخبرنا SceneManager.sceneCountInBuildSettings بعدد المشاهد الموجودة في القائمة. عندما تكون المستويات مرتبة في القائمة، يكون المستوى التالي هو فهرس المشهد النشط زائد 1. يحمّل هذا المخرج المستوى التالي، ويتوقف بعد المستوى الأخير:

void OnTriggerEnter(Collider other)
{
    if (!other.CompareTag("Player")) return;
    int next = SceneManager.GetActiveScene().buildIndex + 1;
    if (next < SceneManager.sceneCountInBuildSettings)
    {
        SceneManager.LoadScene(next);
    }
    else
    {
        Debug.Log("You finished the game!");
    }
}

مع وجود أربعة مشاهد، تكون الفهارس من 0 إلى 3، وتكون قيمة sceneCountInBuildSettings هي 4، لذا تكون قيمة next في المستوى الأخير 4، أي بعد نهاية القائمة بمقدار واحد. لهذا السبب يكون الاختبار next < sceneCountInBuildSettings: فاستدعاء LoadScene(4) لن يحمّل أي شيء، وسيسجل خطأ Unity Cannot load scene: Invalid scene name (empty string) and invalid build index 4.

أصبح نص الخروج الواحد يخدم كل مستوى، ولا يسمّي أي منها مشهدًا. لإضافة مستوى، أضف مشهده إلى القائمة؛ ولتغيير الترتيب، اسحب المشاهد إلى مواضعها في القائمة.

challenge icon

التحدي

سهل

تتضمن قائمة البناء أربعة مشاهد: Menu (الفهرس 0)، ثم Level1 وLevel2 وLevel3. يفتح زر Play في القائمة المشهد Level1، وتحرّك الأسهم اللاعب (وكلاهما جاهز). يحتوي كل مستوى على هدف ذهبي مع النص البرمجي Goal. اكتب النص البرمجي دون تسمية أي مشهد:

  • في Start، اعرض رقم هذا المستوى وعدد المستويات في levelText، بهذا الشكل: Level 2 of 3. القائمة ليست مستوى.
  • عندما يصل اللاعب (ذو الوسم Player) إلى الهدف، حمّل المستوى التالي في القائمة. بعد المستوى الأخير، ارجع إلى القائمة.

اضغط Play، والعب المراحل الثلاث كلها، ثم اضغط Check.

جرّب بنفسك

using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;

public class Goal : MonoBehaviour
{
    public TMP_Text levelText;

    void Start()
    {
        // اعرض "Level 2 of 3": رقم هذا المستوى وإجمالي عدد المستويات
    }

    void OnTriggerEnter(Collider other)
    {
        // وصل اللاعب إلى الهدف: حمّل المستوى التالي، أو القائمة بعد المستوى الأخير
    }
}
quiz iconاختبر نفسك

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

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