Menu
CoddyTech

התחלת השלב מחדש

חלק מהיחידה בונים משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 18 מתוך 56.

הדרך המהירה ביותר לאפס שלב היא לטעון אותו מחדש. SceneManager.GetActiveScene() מחזירה את הסצנה שפתוחה עכשיו, וה-name שלה (או ה-buildIndex שלה) הוא מה ש-LoadScene מקבלת. לחצן Restart הזה בחלונית סיום המשחק קורא ל:

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. החצים מזיזים את ה-Player, וקוביית הזהב ב-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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

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