نهاية الليل
جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 60 من 60.
يُكمل التحدي الأخير لعبةً كاملة: مديرًا ذا حالات، وإيقافًا مؤقتًا يوقف الوقت، ونهايتين، وإعادة تشغيل تعيد مقياس الوقت إلى قيمته السابقة.
التحدي
صعبأضف إيقافًا مؤقتًا ونهايتين وإعادة تشغيل.
- يبدّل
pauseButtonبين Playing وPaused فقط: عند Paused، تُضبطTime.timeScaleعلى 0 وتُعرضpausePanel، وعند Playing يُعكس الأمران. - عند 0 ثانية، تكون نتيجة الليل Won. عند Won أو Lost: مقياس الوقت 0، وتكون
endPanelظاهرةً، وتعرضYou survived the night!أوThe bats got youفيendText. - يضبط
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);
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس إنشاء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارمنصات متحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء لا نهاية له
ثلاثة مساراتعقبات أمامكتدرّب بنفسك: Playground لـ Unity