Menu
CoddyTech

تحميل مشهد

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

تنقسم لعبة Unity إلى مشاهد: قائمة، وكل مستوى، وشاشة شكر. كل مشهد ملف مستقل له كائناته الخاصة، ويبدّل البرنامج النصي إلى مشهد آخر باستخدام SceneManager.LoadScene، من مساحة الأسماء UnityEngine.SceneManagement. يفتح زر «العب» في هذه القائمة، الموصول عبر نافذة Inspector، مستوى الغابة:

using UnityEngine;
using UnityEngine.SceneManagement;

public class MainMenu : MonoBehaviour
{
    public void Play()
    {
        SceneManager.LoadScene("Forest");
    }
}

لا يستطيع Unity تحميل سوى المشاهد الموجودة في قائمة مشاهد الإصدار: في Unity 6، تجدها ضمن File > Build Profiles، تحت Scene List (تُسمى النافذة Build Settings في الإصدارات الأقدم). يجب أن يطابق الاسم اسم ملف المشهد تمامًا. إذا كان المشهد غير موجود في القائمة، أو كُتب اسمه خطأً مثل "Forrest"، فلن يُحمَّل شيء، وستعرض وحدة التحكم خطأً يبدأ بـ Scene 'Forrest' couldn't be loaded ويذكر أن المشهد لم يُضَف إلى الإصدار، وستبقى اللعبة في القائمة.

التبديل ليس فوريًا. يُنفَّذ بقية الإطار الحالي أولًا، لذا تستمر الأسطر التي تأتي بعد LoadScene في التنفيذ؛ وفي بداية الإطار التالي، يحذف Unity كل كائنات المشهد القديم وينشئ المشهد الجديد، وتبدأ برامجه النصية من جديد باستخدام Awake وStart.

challenge icon

التحدي

سهل

اجعل كل بوابة تحمّل المشهد الذي يسمّيه sceneName.

  1. أضف using UnityEngine.SceneManagement; في أعلى Portal.cs.
  2. اكتب void OnTriggerEnter(Collider other): عندما يتحقق other.CompareTag("Player")، استدعِ SceneManager.LoadScene(sceneName);.

اضغط «العب» وامشِ إلى كل بوابة: يتم تحميل Desert ثم Hub ثم Glacier. بعد ذلك اضغط «تحقق».

جرّب بنفسك

using UnityEngine;

public class Portal : MonoBehaviour
{
    public string sceneName;

    // عندما يدخل اللاعب، حمّل المشهد المسمّى sceneName
}

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

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