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", שום דבר לא נטען והחלון Console מציג שגיאה שמתחילה ב-Scene 'Forrest' couldn't be loaded ומציינת שהסצנה לא נוספה לבנייה, והמשחק נשאר בתפריט.

המעבר אינו מיידי. שאר הפריים הנוכחי מתבצע תחילה, ולכן שורות אחרי LoadScene עדיין רצות; בתחילת הפריים הבא Unity משמידה את כל האובייקטים של הסצנה הישנה ובונה את הסצנה החדשה, שהסקריפטים שלה מתחילים שוב עם Awake ו-Start.

challenge icon

אתגר

קל

גרמו לכל שער לטעון את הסצנה ששמה מצוין ב־sceneName.

  1. בראש הקובץ Portal.cs, הוסיפו using UnityEngine.SceneManagement;.
  2. כתבו void OnTriggerEnter(Collider other): כאשר other.CompareTag("Player"), קראו ל־SceneManager.LoadScene(sceneName);.

לחצו על שחק והיכנסו לכל אחד מהשערים: Desert, Hub ו־Glacier נטענות בזו אחר זו. לאחר מכן לחצו על בדיקה.

נסו בעצמכם

using UnityEngine;

public class Portal : MonoBehaviour
{
    public string sceneName;

    // כשהשחקן נכנס, טען את הסצנה ששמה sceneName
}

כל השיעורים ביחידה בניית משחקים אמיתיים

תרגלו בעצמכם: Unity אונליין