Menu
CoddyTech

סוף הלילה

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

האתגר האחרון משלים משחק שלם: מנהל עם מצבים, השהיה שעוצרת את הזמן, שני סופים והפעלה מחדש שמחזירה את קנה המידה של הזמן.

challenge icon

אתגר

קשה

הוסף השהיה, שני סיומים והפעלה מחדש.

  1. pauseButton מחליף רק בין Playing ל־Paused: במצב Paused הערך של Time.timeScale מוגדר ל־0 והחלונית pausePanel מוצגת; במצב Playing שני הדברים מתבטלים.
  2. ב־0 שניות הלילה מסתיים בניצחון Won. במצב Won או Lost: קנה המידה של הזמן הוא 0, והחלונית endPanel מציגה ב־endText את You survived the night! או את The bats got you.
  3. restartButton מגדיר את קנה המידה של הזמן ל־1 וטוען מחדש את הסצנה.

לחץ על "שחק", השהה, הפסד ושחק שוב. ואז לחץ על "בדיקה".

נסו בעצמכם

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;

public class GameManager : MonoBehaviour
{
    public enum State { Playing, Paused, Won, Lost }

    public static GameManager Instance;

    public float nightLength = 15f;
    public float spawnEvery = 2f;
    public GameObject batPrefab;
    public Transform[] spawnPoints;
    public TMP_Text dawnText;
    public Button pauseButton;
    public GameObject pausePanel;
    public GameObject endPanel;
    public TMP_Text endText;
    public Button restartButton;

    public State state;

    private float timeLeft;
    private float spawnTimer;

    void Awake()
    {
        Instance = this;
    }

    void Start()
    {
        state = State.Playing;
        timeLeft = nightLength;
        ShowDawn();
    }

    void Update()
    {
        if (state != State.Playing) return;

        timeLeft -= Time.deltaTime;
        spawnTimer += Time.deltaTime;
        if (spawnTimer >= spawnEvery)
        {
            spawnTimer -= spawnEvery;
            Transform point = spawnPoints[Random.Range(0, spawnPoints.Length)];
            Instantiate(batPrefab, point.position, Quaternion.identity);
        }
        ShowDawn();
    }

    public void Lose()
    {
        if (state != State.Playing) return;
        state = State.Lost;
    }

    void ShowDawn()
    {
        dawnText.text = "Dawn in " + Mathf.CeilToInt(timeLeft);
    }
}
quiz iconבחנו את עצמכם

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

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

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