Menu
CoddyTech

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

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

لكل مشهد في قائمة مشاهد البناء رقم يُسمى فهرس البناء: 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

التحدي

سهل

اجعل كل هدف يفتح المستوى التالي.

  1. في Start()، اعرض "Level " + level + " of " + levels في levelText: يمثّل level قيمة buildIndex للمشهد النشط، ويمثّل levels القيمة SceneManager.sceneCountInBuildSettings - 1.
  2. في OnTriggerEnter، عند دخول Player، حمّل buildIndex + 1، أو 0 (القائمة) عندما لا تكون تلك القيمة أقل من sceneCountInBuildSettings.

اضغط «العب» وأكمل المستويات الثلاثة كلها: ستعود القائمة. ثم اضغط «تحقق».

جرّب بنفسك

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)
    {
        // وصل اللاعب إلى الهدف: حمّل المستوى التالي، أو القائمة بعد المستوى الأخير
    }
}

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

تدرّب بنفسك: Playground لـ Unity