סוף הלילה
חלק מהיחידה בניית משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 60 מתוך 60.
האתגר האחרון משלים משחק שלם: מנהל עם מצבים, השהיה שעוצרת את הזמן, שני סופים והפעלה מחדש שמחזירה את קנה המידה של הזמן.
אתגר
קשההוסף השהיה, שני סיומים והפעלה מחדש.
pauseButtonמחליף רק בין Playing ל־Paused: במצב Paused הערך שלTime.timeScaleמוגדר ל־0 והחלוניתpausePanelמוצגת; במצב Playing שני הדברים מתבטלים.- ב־0 שניות הלילה מסתיים בניצחון Won. במצב Won או Lost: קנה המידה של הזמן הוא 0, והחלונית
endPanelמציגה ב־endTextאתYou survived the night!או אתThe bats got you. 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);
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה בניית משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעותתרגלו בעצמכם: Unity אונליין